query.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. #ifndef NETDATA_API_DATA_QUERY_H
  3. #define NETDATA_API_DATA_QUERY_H
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. typedef enum rrdr_time_grouping {
  8. RRDR_GROUPING_UNDEFINED = 0,
  9. RRDR_GROUPING_AVERAGE,
  10. RRDR_GROUPING_MIN,
  11. RRDR_GROUPING_MAX,
  12. RRDR_GROUPING_SUM,
  13. RRDR_GROUPING_INCREMENTAL_SUM,
  14. RRDR_GROUPING_TRIMMED_MEAN1,
  15. RRDR_GROUPING_TRIMMED_MEAN2,
  16. RRDR_GROUPING_TRIMMED_MEAN3,
  17. RRDR_GROUPING_TRIMMED_MEAN,
  18. RRDR_GROUPING_TRIMMED_MEAN10,
  19. RRDR_GROUPING_TRIMMED_MEAN15,
  20. RRDR_GROUPING_TRIMMED_MEAN20,
  21. RRDR_GROUPING_TRIMMED_MEAN25,
  22. RRDR_GROUPING_MEDIAN,
  23. RRDR_GROUPING_TRIMMED_MEDIAN1,
  24. RRDR_GROUPING_TRIMMED_MEDIAN2,
  25. RRDR_GROUPING_TRIMMED_MEDIAN3,
  26. RRDR_GROUPING_TRIMMED_MEDIAN5,
  27. RRDR_GROUPING_TRIMMED_MEDIAN10,
  28. RRDR_GROUPING_TRIMMED_MEDIAN15,
  29. RRDR_GROUPING_TRIMMED_MEDIAN20,
  30. RRDR_GROUPING_TRIMMED_MEDIAN25,
  31. RRDR_GROUPING_PERCENTILE25,
  32. RRDR_GROUPING_PERCENTILE50,
  33. RRDR_GROUPING_PERCENTILE75,
  34. RRDR_GROUPING_PERCENTILE80,
  35. RRDR_GROUPING_PERCENTILE90,
  36. RRDR_GROUPING_PERCENTILE,
  37. RRDR_GROUPING_PERCENTILE97,
  38. RRDR_GROUPING_PERCENTILE98,
  39. RRDR_GROUPING_PERCENTILE99,
  40. RRDR_GROUPING_STDDEV,
  41. RRDR_GROUPING_CV,
  42. RRDR_GROUPING_SES,
  43. RRDR_GROUPING_DES,
  44. RRDR_GROUPING_COUNTIF,
  45. } RRDR_TIME_GROUPING;
  46. const char *time_grouping_method2string(RRDR_TIME_GROUPING group);
  47. void time_grouping_init(void);
  48. RRDR_TIME_GROUPING time_grouping_parse(const char *name, RRDR_TIME_GROUPING def);
  49. const char *time_grouping_tostring(RRDR_TIME_GROUPING group);
  50. typedef enum rrdr_group_by {
  51. RRDR_GROUP_BY_NONE = 0,
  52. RRDR_GROUP_BY_SELECTED = (1 << 0),
  53. RRDR_GROUP_BY_DIMENSION = (1 << 1),
  54. RRDR_GROUP_BY_INSTANCE = (1 << 2),
  55. RRDR_GROUP_BY_LABEL = (1 << 3),
  56. RRDR_GROUP_BY_NODE = (1 << 4),
  57. RRDR_GROUP_BY_CONTEXT = (1 << 5),
  58. RRDR_GROUP_BY_UNITS = (1 << 6),
  59. RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE = (1 << 7),
  60. } RRDR_GROUP_BY;
  61. #define SUPPORTED_GROUP_BY_METHODS (\
  62. RRDR_GROUP_BY_SELECTED |\
  63. RRDR_GROUP_BY_DIMENSION |\
  64. RRDR_GROUP_BY_INSTANCE |\
  65. RRDR_GROUP_BY_LABEL |\
  66. RRDR_GROUP_BY_NODE |\
  67. RRDR_GROUP_BY_CONTEXT |\
  68. RRDR_GROUP_BY_UNITS |\
  69. RRDR_GROUP_BY_PERCENTAGE_OF_INSTANCE \
  70. )
  71. struct web_buffer;
  72. RRDR_GROUP_BY group_by_parse(char *s);
  73. void buffer_json_group_by_to_array(struct web_buffer *wb, RRDR_GROUP_BY group_by);
  74. typedef enum rrdr_group_by_function {
  75. RRDR_GROUP_BY_FUNCTION_AVERAGE = 0,
  76. RRDR_GROUP_BY_FUNCTION_MIN,
  77. RRDR_GROUP_BY_FUNCTION_MAX,
  78. RRDR_GROUP_BY_FUNCTION_SUM,
  79. } RRDR_GROUP_BY_FUNCTION;
  80. RRDR_GROUP_BY_FUNCTION group_by_aggregate_function_parse(const char *s);
  81. const char *group_by_aggregate_function_to_string(RRDR_GROUP_BY_FUNCTION group_by_function);
  82. #ifdef __cplusplus
  83. }
  84. #endif
  85. #endif //NETDATA_API_DATA_QUERY_H