Skip to content

Commit

Permalink
Transform percentile function, closes #868
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanderzobnin committed Jan 15, 2020
1 parent 82cfda6 commit 376183e
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 11 deletions.
22 changes: 12 additions & 10 deletions src/datasource-zabbix/dataProcessor.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ import _ from 'lodash';
import * as utils from './utils';
import ts, { groupBy_perf as groupBy } from './timeseries';

let SUM = ts.SUM;
let COUNT = ts.COUNT;
let AVERAGE = ts.AVERAGE;
let MIN = ts.MIN;
let MAX = ts.MAX;
let MEDIAN = ts.MEDIAN;
let PERCENTILE = ts.PERCENTILE;

let downsampleSeries = ts.downsample;
let groupBy_exported = (interval, groupFunc, datapoints) => groupBy(datapoints, interval, groupFunc);
let sumSeries = ts.sumSeries;
Expand All @@ -11,14 +19,7 @@ let scale = (factor, datapoints) => ts.scale_perf(datapoints, factor);
let offset = (delta, datapoints) => ts.offset(datapoints, delta);
let simpleMovingAverage = (n, datapoints) => ts.simpleMovingAverage(datapoints, n);
let expMovingAverage = (a, datapoints) => ts.expMovingAverage(datapoints, a);

let SUM = ts.SUM;
let COUNT = ts.COUNT;
let AVERAGE = ts.AVERAGE;
let MIN = ts.MIN;
let MAX = ts.MAX;
let MEDIAN = ts.MEDIAN;
let PERCENTILE = ts.PERCENTILE;
let percentile = (interval, n, datapoints) => groupBy(datapoints, interval, _.partial(PERCENTILE, n));

function limit(order, n, orderByFunc, timeseries) {
let orderByCallback = aggregationFunctions[orderByFunc];
Expand Down Expand Up @@ -120,7 +121,7 @@ function aggregateWrapper(groupByCallback, interval, datapoints) {
return groupBy(sortedPoints, interval, groupByCallback);
}

function percentile(interval, n, datapoints) {
function percentileAgg(interval, n, datapoints) {
const flattenedPoints = ts.flattenDatapoints(datapoints);
// groupBy_perf works with sorted series only
const sortedPoints = ts.sortByTime(flattenedPoints);
Expand Down Expand Up @@ -153,10 +154,11 @@ let metricFunctions = {
rate: rate,
movingAverage: simpleMovingAverage,
exponentialMovingAverage: expMovingAverage,
percentile: percentile,
transformNull: transformNull,
aggregateBy: aggregateByWrapper,
// Predefined aggs
percentile: percentile,
percentileAgg: percentileAgg,
average: _.partial(aggregateWrapper, AVERAGE),
min: _.partial(aggregateWrapper, MIN),
max: _.partial(aggregateWrapper, MAX),
Expand Down
12 changes: 11 additions & 1 deletion src/datasource-zabbix/metricFunctions.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,16 @@ addFuncDef({
defaultParams: [0.2],
});

addFuncDef({
name: 'percentile',
category: 'Transform',
params: [
{ name: 'interval', type: 'string' },
{ name: 'percent', type: 'float', options: [25, 50, 75, 90, 95, 99, 99.9] }
],
defaultParams: ['1m', 95],
});

addFuncDef({
name: 'removeAboveValue',
category: 'Transform',
Expand Down Expand Up @@ -140,7 +150,7 @@ addFuncDef({
});

addFuncDef({
name: 'percentile',
name: 'percentileAgg',
category: 'Aggregate',
params: [
{ name: 'interval', type: 'string' },
Expand Down

0 comments on commit 376183e

Please sign in to comment.