functions: exponential moving average
This commit is contained in:
4
dist/test/datasource-zabbix/dataProcessor.js
vendored
4
dist/test/datasource-zabbix/dataProcessor.js
vendored
@@ -34,6 +34,9 @@ var scale = function scale(factor, datapoints) {
|
||||
var simpleMovingAverage = function simpleMovingAverage(n, datapoints) {
|
||||
return _timeseries2.default.simpleMovingAverage(datapoints, n);
|
||||
};
|
||||
var expMovingAverage = function expMovingAverage(a, datapoints) {
|
||||
return _timeseries2.default.expMovingAverage(datapoints, a);
|
||||
};
|
||||
|
||||
var SUM = _timeseries2.default.SUM;
|
||||
var COUNT = _timeseries2.default.COUNT;
|
||||
@@ -125,6 +128,7 @@ var metricFunctions = {
|
||||
delta: delta,
|
||||
rate: rate,
|
||||
simpleMovingAverage: simpleMovingAverage,
|
||||
expMovingAverage: expMovingAverage,
|
||||
aggregateBy: aggregateByWrapper,
|
||||
average: _lodash2.default.partial(aggregateWrapper, AVERAGE),
|
||||
min: _lodash2.default.partial(aggregateWrapper, MIN),
|
||||
|
||||
@@ -80,6 +80,13 @@ addFuncDef({
|
||||
defaultParams: [10]
|
||||
});
|
||||
|
||||
addFuncDef({
|
||||
name: 'expMovingAverage',
|
||||
category: 'Transform',
|
||||
params: [{ name: 'smoothing', type: 'float', options: [0.001, 0.01, 0.05, 0.1, 0.2, 0.3, 0.5, 0.7, 0.9] }],
|
||||
defaultParams: [0.2]
|
||||
});
|
||||
|
||||
// Aggregate
|
||||
|
||||
addFuncDef({
|
||||
|
||||
17
dist/test/datasource-zabbix/timeseries.js
vendored
17
dist/test/datasource-zabbix/timeseries.js
vendored
@@ -277,6 +277,22 @@ function simpleMovingAverage(datapoints, n) {
|
||||
return sma;
|
||||
}
|
||||
|
||||
function expMovingAverage(datapoints, a) {
|
||||
var ema = [datapoints[0]];
|
||||
var ema_prev = datapoints[0][POINT_VALUE];
|
||||
var ema_cur = void 0;
|
||||
for (var i = 1; i < datapoints.length; i++) {
|
||||
if (datapoints[i][POINT_VALUE] !== null) {
|
||||
ema_cur = a * datapoints[i][POINT_VALUE] + (1 - a) * ema_prev;
|
||||
ema_prev = ema_cur;
|
||||
ema.push([ema_cur, datapoints[i][POINT_TIMESTAMP]]);
|
||||
} else {
|
||||
ema.push([null, datapoints[i][POINT_TIMESTAMP]]);
|
||||
}
|
||||
}
|
||||
return ema;
|
||||
}
|
||||
|
||||
function COUNT(values) {
|
||||
return values.length;
|
||||
}
|
||||
@@ -411,6 +427,7 @@ var exportedFunctions = {
|
||||
delta: delta,
|
||||
rate: rate,
|
||||
simpleMovingAverage: simpleMovingAverage,
|
||||
expMovingAverage: expMovingAverage,
|
||||
SUM: SUM,
|
||||
COUNT: COUNT,
|
||||
AVERAGE: AVERAGE,
|
||||
|
||||
Reference in New Issue
Block a user