functions: exponential moving average
This commit is contained in:
7
dist/datasource-zabbix/dataProcessor.js
vendored
7
dist/datasource-zabbix/dataProcessor.js
vendored
@@ -3,7 +3,7 @@
|
|||||||
System.register(['lodash', './utils', './timeseries'], function (_export, _context) {
|
System.register(['lodash', './utils', './timeseries'], function (_export, _context) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var _, utils, ts, downsampleSeries, groupBy, groupBy_exported, sumSeries, delta, rate, scale, simpleMovingAverage, SUM, COUNT, AVERAGE, MIN, MAX, MEDIAN, metricFunctions, aggregationFunctions;
|
var _, utils, ts, downsampleSeries, groupBy, groupBy_exported, sumSeries, delta, rate, scale, simpleMovingAverage, expMovingAverage, SUM, COUNT, AVERAGE, MIN, MAX, MEDIAN, metricFunctions, aggregationFunctions;
|
||||||
|
|
||||||
function limit(order, n, orderByFunc, timeseries) {
|
function limit(order, n, orderByFunc, timeseries) {
|
||||||
var orderByCallback = aggregationFunctions[orderByFunc];
|
var orderByCallback = aggregationFunctions[orderByFunc];
|
||||||
@@ -110,6 +110,10 @@ System.register(['lodash', './utils', './timeseries'], function (_export, _conte
|
|||||||
return ts.simpleMovingAverage(datapoints, n);
|
return ts.simpleMovingAverage(datapoints, n);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
expMovingAverage = function expMovingAverage(a, datapoints) {
|
||||||
|
return ts.expMovingAverage(datapoints, a);
|
||||||
|
};
|
||||||
|
|
||||||
SUM = ts.SUM;
|
SUM = ts.SUM;
|
||||||
COUNT = ts.COUNT;
|
COUNT = ts.COUNT;
|
||||||
AVERAGE = ts.AVERAGE;
|
AVERAGE = ts.AVERAGE;
|
||||||
@@ -122,6 +126,7 @@ System.register(['lodash', './utils', './timeseries'], function (_export, _conte
|
|||||||
delta: delta,
|
delta: delta,
|
||||||
rate: rate,
|
rate: rate,
|
||||||
simpleMovingAverage: simpleMovingAverage,
|
simpleMovingAverage: simpleMovingAverage,
|
||||||
|
expMovingAverage: expMovingAverage,
|
||||||
aggregateBy: aggregateByWrapper,
|
aggregateBy: aggregateByWrapper,
|
||||||
average: _.partial(aggregateWrapper, AVERAGE),
|
average: _.partial(aggregateWrapper, AVERAGE),
|
||||||
min: _.partial(aggregateWrapper, MIN),
|
min: _.partial(aggregateWrapper, MIN),
|
||||||
|
|||||||
2
dist/datasource-zabbix/dataProcessor.js.map
vendored
2
dist/datasource-zabbix/dataProcessor.js.map
vendored
File diff suppressed because one or more lines are too long
7
dist/datasource-zabbix/metricFunctions.js
vendored
7
dist/datasource-zabbix/metricFunctions.js
vendored
@@ -117,6 +117,13 @@ System.register(['lodash', 'jquery'], function (_export, _context) {
|
|||||||
defaultParams: [10]
|
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
|
// Aggregate
|
||||||
|
|
||||||
addFuncDef({
|
addFuncDef({
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
17
dist/datasource-zabbix/timeseries.js
vendored
17
dist/datasource-zabbix/timeseries.js
vendored
@@ -252,6 +252,22 @@ System.register(['lodash', './utils'], function (_export, _context) {
|
|||||||
return sma;
|
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) {
|
function COUNT(values) {
|
||||||
return values.length;
|
return values.length;
|
||||||
}
|
}
|
||||||
@@ -395,6 +411,7 @@ System.register(['lodash', './utils'], function (_export, _context) {
|
|||||||
delta: delta,
|
delta: delta,
|
||||||
rate: rate,
|
rate: rate,
|
||||||
simpleMovingAverage: simpleMovingAverage,
|
simpleMovingAverage: simpleMovingAverage,
|
||||||
|
expMovingAverage: expMovingAverage,
|
||||||
SUM: SUM,
|
SUM: SUM,
|
||||||
COUNT: COUNT,
|
COUNT: COUNT,
|
||||||
AVERAGE: AVERAGE,
|
AVERAGE: AVERAGE,
|
||||||
|
|||||||
2
dist/datasource-zabbix/timeseries.js.map
vendored
2
dist/datasource-zabbix/timeseries.js.map
vendored
File diff suppressed because one or more lines are too long
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) {
|
var simpleMovingAverage = function simpleMovingAverage(n, datapoints) {
|
||||||
return _timeseries2.default.simpleMovingAverage(datapoints, n);
|
return _timeseries2.default.simpleMovingAverage(datapoints, n);
|
||||||
};
|
};
|
||||||
|
var expMovingAverage = function expMovingAverage(a, datapoints) {
|
||||||
|
return _timeseries2.default.expMovingAverage(datapoints, a);
|
||||||
|
};
|
||||||
|
|
||||||
var SUM = _timeseries2.default.SUM;
|
var SUM = _timeseries2.default.SUM;
|
||||||
var COUNT = _timeseries2.default.COUNT;
|
var COUNT = _timeseries2.default.COUNT;
|
||||||
@@ -125,6 +128,7 @@ var metricFunctions = {
|
|||||||
delta: delta,
|
delta: delta,
|
||||||
rate: rate,
|
rate: rate,
|
||||||
simpleMovingAverage: simpleMovingAverage,
|
simpleMovingAverage: simpleMovingAverage,
|
||||||
|
expMovingAverage: expMovingAverage,
|
||||||
aggregateBy: aggregateByWrapper,
|
aggregateBy: aggregateByWrapper,
|
||||||
average: _lodash2.default.partial(aggregateWrapper, AVERAGE),
|
average: _lodash2.default.partial(aggregateWrapper, AVERAGE),
|
||||||
min: _lodash2.default.partial(aggregateWrapper, MIN),
|
min: _lodash2.default.partial(aggregateWrapper, MIN),
|
||||||
|
|||||||
@@ -80,6 +80,13 @@ addFuncDef({
|
|||||||
defaultParams: [10]
|
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
|
// Aggregate
|
||||||
|
|
||||||
addFuncDef({
|
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;
|
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) {
|
function COUNT(values) {
|
||||||
return values.length;
|
return values.length;
|
||||||
}
|
}
|
||||||
@@ -411,6 +427,7 @@ var exportedFunctions = {
|
|||||||
delta: delta,
|
delta: delta,
|
||||||
rate: rate,
|
rate: rate,
|
||||||
simpleMovingAverage: simpleMovingAverage,
|
simpleMovingAverage: simpleMovingAverage,
|
||||||
|
expMovingAverage: expMovingAverage,
|
||||||
SUM: SUM,
|
SUM: SUM,
|
||||||
COUNT: COUNT,
|
COUNT: COUNT,
|
||||||
AVERAGE: AVERAGE,
|
AVERAGE: AVERAGE,
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ let delta = ts.delta;
|
|||||||
let rate = ts.rate;
|
let rate = ts.rate;
|
||||||
let scale = (factor, datapoints) => ts.scale_perf(datapoints, factor);
|
let scale = (factor, datapoints) => ts.scale_perf(datapoints, factor);
|
||||||
let simpleMovingAverage = (n, datapoints) => ts.simpleMovingAverage(datapoints, n);
|
let simpleMovingAverage = (n, datapoints) => ts.simpleMovingAverage(datapoints, n);
|
||||||
|
let expMovingAverage = (a, datapoints) => ts.expMovingAverage(datapoints, a);
|
||||||
|
|
||||||
let SUM = ts.SUM;
|
let SUM = ts.SUM;
|
||||||
let COUNT = ts.COUNT;
|
let COUNT = ts.COUNT;
|
||||||
@@ -104,6 +105,7 @@ let metricFunctions = {
|
|||||||
delta: delta,
|
delta: delta,
|
||||||
rate: rate,
|
rate: rate,
|
||||||
simpleMovingAverage: simpleMovingAverage,
|
simpleMovingAverage: simpleMovingAverage,
|
||||||
|
expMovingAverage: expMovingAverage,
|
||||||
aggregateBy: aggregateByWrapper,
|
aggregateBy: aggregateByWrapper,
|
||||||
average: _.partial(aggregateWrapper, AVERAGE),
|
average: _.partial(aggregateWrapper, AVERAGE),
|
||||||
min: _.partial(aggregateWrapper, MIN),
|
min: _.partial(aggregateWrapper, MIN),
|
||||||
|
|||||||
@@ -66,6 +66,15 @@ addFuncDef({
|
|||||||
defaultParams: [10],
|
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
|
// Aggregate
|
||||||
|
|
||||||
addFuncDef({
|
addFuncDef({
|
||||||
|
|||||||
@@ -269,6 +269,22 @@ function simpleMovingAverage(datapoints, n) {
|
|||||||
return sma;
|
return sma;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function expMovingAverage(datapoints, a) {
|
||||||
|
let ema = [datapoints[0]];
|
||||||
|
let ema_prev = datapoints[0][POINT_VALUE];
|
||||||
|
let ema_cur;
|
||||||
|
for (let 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) {
|
function COUNT(values) {
|
||||||
return values.length;
|
return values.length;
|
||||||
}
|
}
|
||||||
@@ -403,6 +419,7 @@ const exportedFunctions = {
|
|||||||
delta,
|
delta,
|
||||||
rate,
|
rate,
|
||||||
simpleMovingAverage,
|
simpleMovingAverage,
|
||||||
|
expMovingAverage,
|
||||||
SUM,
|
SUM,
|
||||||
COUNT,
|
COUNT,
|
||||||
AVERAGE,
|
AVERAGE,
|
||||||
|
|||||||
Reference in New Issue
Block a user