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