Merge pull request #368 from Recluse/master

Sum and count aggregations added
This commit is contained in:
Alexander Zobnin
2017-03-23 19:58:44 +04:00
committed by GitHub
4 changed files with 52 additions and 8 deletions

View File

@@ -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;
} }
}; };

View File

@@ -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'],
}); });

View File

@@ -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();

View File

@@ -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;
} }