瀏覽代碼

refactor(influxdb series handling): performance and refactoring of PR #2179, also switched to InfluxDB epoch json format

Torkel Ödegaard 10 年之前
父節點
當前提交
0838f432ca

+ 1 - 1
public/app/plugins/datasource/influxdb/datasource.js

@@ -130,7 +130,7 @@ function (angular, _, kbn, InfluxSeries, InfluxQueryBuilder) {
     }
 
     InfluxDatasource.prototype._seriesQuery = function(query) {
-      return this._influxRequest('GET', '/query', {q: query});
+      return this._influxRequest('GET', '/query', {q: query, epoch: 'ms'});
     };
 
     InfluxDatasource.prototype.testDatasource = function() {

+ 15 - 21
public/app/plugins/datasource/influxdb/influxSeries.js

@@ -15,43 +15,37 @@ function (_) {
   p.getTimeSeries = function() {
     var output = [];
     var self = this;
+    var i, j;
 
     if (self.series.length === 0) {
       return output;
     }
 
-    var field_datapoints = function(datapoints, column_index) {
-      return _.map(datapoints, function(datapoint) {
-        return [datapoint[column_index - 1], _.last(datapoint)];
-      });
-    };
-
     _.each(self.series, function(series) {
-      var datapoints = [];
       var columns = series.columns.length;
-      for (var i = 0; i < series.values.length; i++) {
-        datapoints[i] = series.values[i].slice(1);
-        datapoints[i].push(new Date(series.values[i][0]).getTime());
-      }
+      var tags = _.map(series.tags, function(value, key) {
+        return key + ': ' + value;
+      });
 
-      for (var j = 1; j < columns; j++) {
+      for (j = 1; j < columns; j++) {
         var seriesName = series.name;
         var columnName = series.columns[j];
+        if (columnName !== 'value') {
+          seriesName = seriesName + '.' + columnName;
+        }
 
         if (self.alias) {
           seriesName = self._getSeriesName(series);
         } else if (series.tags) {
-          var tags = _.map(series.tags, function(value, key) {
-            return key + ': ' + value;
-          });
-          if (columnName === 'value') {
-            seriesName = seriesName + ' {' + tags.join(', ') + '}';
-          } else {
-            seriesName = seriesName + '.' + columnName + ' {' + tags.join(', ') + '}';
-          }
+          seriesName = seriesName + ' {' + tags.join(', ') + '}';
+        }
+
+        var datapoints = [];
+        for (i = 0; i < series.values.length; i++) {
+          datapoints[i] = [series.values[i][j], series.values[i][0]];
         }
 
-        output.push({ target: seriesName, datapoints: field_datapoints(datapoints, j)});
+        output.push({ target: seriesName, datapoints: datapoints});
       }
     });
 

+ 3 - 3
public/test/specs/influxSeries-specs.js

@@ -11,7 +11,7 @@ define([
           name: 'cpu',
           tags:  {app: 'test', server: 'server1'},
           columns: ['time', 'mean', 'max', 'min'],
-          values: [["2015-05-18T10:57:05Z", 10, 11, 9], ["2015-05-18T10:57:06Z", 20, 21, 19]]
+          values: [[1431946625000, 10, 11, 9], [1431946626000, 20, 21, 19]]
         }
       ]};
       describe('and no alias', function() {
@@ -101,13 +101,13 @@ define([
           name: 'cpu',
           tags:  {app: 'test', server: 'server1'},
           columns: ['time', 'mean'],
-          values: [["2015-05-18T10:57:05Z", 10], ["2015-05-18T10:57:06Z", 12]]
+          values: [[1431946625000, 10], [1431946626000, 12]]
         },
         {
           name: 'cpu',
           tags:  {app: 'test2', server: 'server2'},
           columns: ['time', 'mean'],
-          values: [["2015-05-18T10:57:05Z", 15], ["2015-05-18T10:57:06Z", 16]]
+          values: [[1431946625000, 15], [1431946626000, 16]]
         }
       ]};