From dd28b28174f1db1a743987886ded6ee3e3de3f88 Mon Sep 17 00:00:00 2001 From: Mark Reibert Date: Sat, 11 Jan 2020 10:28:32 -0700 Subject: [PATCH] Fix percentile() function, closes #862 (#863) Like the other aggregation functions, the datapoints need to be sorted in time before calling groupBy_perf(). --- src/datasource-zabbix/dataProcessor.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/datasource-zabbix/dataProcessor.js b/src/datasource-zabbix/dataProcessor.js index e69ceda..eb5d1a1 100644 --- a/src/datasource-zabbix/dataProcessor.js +++ b/src/datasource-zabbix/dataProcessor.js @@ -121,9 +121,11 @@ function aggregateWrapper(groupByCallback, interval, datapoints) { } function percentile(interval, n, datapoints) { - var flattenedPoints = ts.flattenDatapoints(datapoints); - var groupByCallback = _.partial(PERCENTILE, n); - return groupBy(flattenedPoints, interval, groupByCallback); + const flattenedPoints = ts.flattenDatapoints(datapoints); + // groupBy_perf works with sorted series only + const sortedPoints = ts.sortByTime(flattenedPoints); + let groupByCallback = _.partial(PERCENTILE, n); + return groupBy(sortedPoints, interval, groupByCallback); } function timeShift(interval, range) {