Sum and count aggregations added
Sum and count aggregations of metrics (I really need this) Signed-off-by: Ruslan Semov <me@recluse.ru>
This commit is contained in:
@@ -130,6 +130,18 @@ function limit(order, n, orderByFunc, timeseries) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SUM(values) {
|
||||||
|
var sum = 0;
|
||||||
|
_.each(values, function(value) {
|
||||||
|
sum += value;
|
||||||
|
});
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
function COUNT(values) {
|
||||||
|
return values.length;
|
||||||
|
}
|
||||||
|
|
||||||
function AVERAGE(values) {
|
function AVERAGE(values) {
|
||||||
var sum = 0;
|
var sum = 0;
|
||||||
_.each(values, function(value) {
|
_.each(values, function(value) {
|
||||||
@@ -289,6 +301,8 @@ let metricFunctions = {
|
|||||||
min: _.partial(aggregateWrapper, MIN),
|
min: _.partial(aggregateWrapper, MIN),
|
||||||
max: _.partial(aggregateWrapper, MAX),
|
max: _.partial(aggregateWrapper, MAX),
|
||||||
median: _.partial(aggregateWrapper, MEDIAN),
|
median: _.partial(aggregateWrapper, MEDIAN),
|
||||||
|
sum: _.partial(aggregateWrapper, SUM),
|
||||||
|
count: _.partial(aggregateWrapper, COUNT),
|
||||||
sumSeries: sumSeries,
|
sumSeries: sumSeries,
|
||||||
top: _.partial(limit, 'top'),
|
top: _.partial(limit, 'top'),
|
||||||
bottom: _.partial(limit, 'bottom'),
|
bottom: _.partial(limit, 'bottom'),
|
||||||
@@ -301,7 +315,9 @@ let aggregationFunctions = {
|
|||||||
avg: AVERAGE,
|
avg: AVERAGE,
|
||||||
min: MIN,
|
min: MIN,
|
||||||
max: MAX,
|
max: MAX,
|
||||||
median: MEDIAN
|
median: MEDIAN,
|
||||||
|
sum: SUM,
|
||||||
|
count: COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -311,6 +327,8 @@ export default {
|
|||||||
MIN: MIN,
|
MIN: MIN,
|
||||||
MAX: MAX,
|
MAX: MAX,
|
||||||
MEDIAN: MEDIAN,
|
MEDIAN: MEDIAN,
|
||||||
|
SUM: SUM,
|
||||||
|
COUNT: COUNT,
|
||||||
unShiftTimeSeries: unShiftTimeSeries,
|
unShiftTimeSeries: unShiftTimeSeries,
|
||||||
|
|
||||||
get aggregationFunctions() {
|
get aggregationFunctions() {
|
||||||
@@ -320,4 +338,4 @@ export default {
|
|||||||
get metricFunctions() {
|
get metricFunctions() {
|
||||||
return metricFunctions;
|
return metricFunctions;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -29,7 +29,7 @@ addFuncDef({
|
|||||||
category: 'Transform',
|
category: 'Transform',
|
||||||
params: [
|
params: [
|
||||||
{ name: 'interval', type: 'string'},
|
{ name: 'interval', type: 'string'},
|
||||||
{ name: 'function', type: 'string', options: ['avg', 'min', 'max', 'median'] }
|
{ name: 'function', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count', 'median'] }
|
||||||
],
|
],
|
||||||
defaultParams: ['1m', 'avg'],
|
defaultParams: ['1m', 'avg'],
|
||||||
});
|
});
|
||||||
@@ -95,12 +95,30 @@ addFuncDef({
|
|||||||
defaultParams: ['1m'],
|
defaultParams: ['1m'],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
addFuncDef({
|
||||||
|
name: 'sum',
|
||||||
|
category: 'Aggregate',
|
||||||
|
params: [
|
||||||
|
{ name: 'interval', type: 'string' }
|
||||||
|
],
|
||||||
|
defaultParams: ['1m'],
|
||||||
|
});
|
||||||
|
|
||||||
|
addFuncDef({
|
||||||
|
name: 'count',
|
||||||
|
category: 'Aggregate',
|
||||||
|
params: [
|
||||||
|
{ name: 'interval', type: 'string' }
|
||||||
|
],
|
||||||
|
defaultParams: ['1m'],
|
||||||
|
});
|
||||||
|
|
||||||
addFuncDef({
|
addFuncDef({
|
||||||
name: 'aggregateBy',
|
name: 'aggregateBy',
|
||||||
category: 'Aggregate',
|
category: 'Aggregate',
|
||||||
params: [
|
params: [
|
||||||
{ name: 'interval', type: 'string' },
|
{ name: 'interval', type: 'string' },
|
||||||
{ name: 'function', type: 'string', options: ['avg', 'min', 'max', 'median'] }
|
{ name: 'function', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count', 'median'] }
|
||||||
],
|
],
|
||||||
defaultParams: ['1m', 'avg'],
|
defaultParams: ['1m', 'avg'],
|
||||||
});
|
});
|
||||||
@@ -112,7 +130,7 @@ addFuncDef({
|
|||||||
category: 'Filter',
|
category: 'Filter',
|
||||||
params: [
|
params: [
|
||||||
{ name: 'number', type: 'int' },
|
{ name: 'number', type: 'int' },
|
||||||
{ name: 'value', type: 'string', options: ['avg', 'min', 'max', 'median'] }
|
{ name: 'value', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count', 'median'] }
|
||||||
],
|
],
|
||||||
defaultParams: [5, 'avg'],
|
defaultParams: [5, 'avg'],
|
||||||
});
|
});
|
||||||
@@ -122,7 +140,7 @@ addFuncDef({
|
|||||||
category: 'Filter',
|
category: 'Filter',
|
||||||
params: [
|
params: [
|
||||||
{ name: 'number', type: 'int' },
|
{ name: 'number', type: 'int' },
|
||||||
{ name: 'value', type: 'string', options: ['avg', 'min', 'max', 'median'] }
|
{ name: 'value', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count', 'median'] }
|
||||||
],
|
],
|
||||||
defaultParams: [5, 'avg'],
|
defaultParams: [5, 'avg'],
|
||||||
});
|
});
|
||||||
@@ -133,7 +151,7 @@ addFuncDef({
|
|||||||
name: 'trendValue',
|
name: 'trendValue',
|
||||||
category: 'Trends',
|
category: 'Trends',
|
||||||
params: [
|
params: [
|
||||||
{ name: 'type', type: 'string', options: ['avg', 'min', 'max'] }
|
{ name: 'type', type: 'string', options: ['avg', 'min', 'max', 'sum', 'count'] }
|
||||||
],
|
],
|
||||||
defaultParams: ['avg'],
|
defaultParams: ['avg'],
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -79,7 +79,9 @@ export class ZabbixQueryController extends QueryCtrl {
|
|||||||
this.downsampleFunctionList = [
|
this.downsampleFunctionList = [
|
||||||
{name: "avg", value: "avg"},
|
{name: "avg", value: "avg"},
|
||||||
{name: "min", value: "min"},
|
{name: "min", value: "min"},
|
||||||
{name: "max", value: "max"}
|
{name: "max", value: "max"},
|
||||||
|
{name: "sum", value: "sum"},
|
||||||
|
{name: "count", value: "count"}
|
||||||
];
|
];
|
||||||
|
|
||||||
this.initFilters();
|
this.initFilters();
|
||||||
|
|||||||
@@ -88,6 +88,12 @@ function convertTrendPoint(valueType, point) {
|
|||||||
case "avg":
|
case "avg":
|
||||||
value = point.value_avg;
|
value = point.value_avg;
|
||||||
break;
|
break;
|
||||||
|
case "sum":
|
||||||
|
value = point.value_sum;
|
||||||
|
break;
|
||||||
|
case "count":
|
||||||
|
value = point.value_count;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
value = point.value_avg;
|
value = point.value_avg;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user