mysql-connector: use consolidateBy in SQL queries as agg func

This commit is contained in:
Alexander Zobnin
2017-07-22 20:57:10 +03:00
parent 327aee7ef4
commit 3795ce564e
8 changed files with 48 additions and 12 deletions

View File

@@ -174,7 +174,7 @@ class ZabbixAPIDatasource {
} else {
// Use history
if (this.enableDirectDBConnection) {
getHistoryPromise = this.zabbix.getHistory(items, timeFrom, timeTo, options.intervalMs)
getHistoryPromise = this.zabbix.getHistory(items, timeFrom, timeTo, options)
.then(history => this.zabbix.dbConnector.handleHistory(history, items));
} else {
getHistoryPromise = this.zabbix.getHistory(items, timeFrom, timeTo)

View File

@@ -10,6 +10,14 @@ const HISTORY_TO_TABLE_MAP = {
'4': 'history_text'
};
const consolidateByFunc = {
'avg': 'AVG',
'min': 'MIN',
'max': 'MAX',
'sum': 'SUM',
'count': 'COUNT'
};
/** @ngInject */
function ZabbixDBConnectorFactory(datasourceSrv, backendSrv) {
@@ -37,9 +45,12 @@ function ZabbixDBConnectorFactory(datasourceSrv, backendSrv) {
}
}
getHistory(items, timeFrom, timeTill, intervalMs) {
getHistory(items, timeFrom, timeTill, options) {
let {intervalMs, consolidateBy} = options;
let intervalSec = Math.ceil(intervalMs / 1000);
let aggFunction = 'AVG';
consolidateBy = consolidateBy || 'avg';
let aggFunction = consolidateByFunc[consolidateBy];
// Group items by value type and perform request for each value type
let grouped_items = _.groupBy(items, 'value_type');