Преглед изворни кода

feat(elasticsearch): began work on supporting extended stats metric agg, it gives you standard deviation and more

Torkel Ödegaard пре 10 година
родитељ
комит
b24c539206

+ 9 - 0
public/app/plugins/datasource/elasticsearch/datasource.js

@@ -213,6 +213,15 @@ function (angular, _, config, kbn, moment, ElasticQueryBuilder) {
                 }
                 break;
               }
+              case 'extended_stats': {
+                var stats = bucket[metric.id];
+
+                for (var statIndex in metric.stats) {
+                  var statName = metric.stats[statIndex];
+                  addMetricPoint(seriesName + ' ' + statName, stats[statName], bucket.key)
+                }
+                break;
+              }
               default: {
                 seriesName += ' ' + metric.field + ' ' + metric.type;
                 value = bucket[metric.id].value;

+ 14 - 6
public/app/plugins/datasource/elasticsearch/metricAgg.js

@@ -20,22 +20,29 @@ function (angular, _, queryDef) {
 
     $rootScope.onAppEvent('elastic-query-updated', function() {
       $scope.index = _.indexOf(metricAggs, $scope.agg);
-
-      $scope.isFirst = $scope.index === 0;
-      $scope.isSingle = metricAggs.length === 1;
       $scope.validateModel();
     });
 
     $scope.validateModel = function() {
+      $scope.isFirst = $scope.index === 0;
+      $scope.isSingle = metricAggs.length === 1;
+
       $scope.settingsLinkText = '';
 
       if (!$scope.agg.field) {
         $scope.agg.field = 'select field';
       }
 
-      if ($scope.agg.type === 'percentiles') {
-        $scope.agg.settings.percents = $scope.agg.settings.percents || [25,50,75,95,99];
-        $scope.settingsLinkText = 'values: ' + $scope.agg.settings.percents.join(',');
+      switch($scope.agg.type) {
+        case 'percentiles': {
+          $scope.agg.settings.percents = $scope.agg.settings.percents || [25,50,75,95,99];
+          $scope.settingsLinkText = 'values: ' + $scope.agg.settings.percents.join(',');
+          break;
+        }
+        case 'extended_stats': {
+          $scope.agg.stats = $scope.agg.stats || ['std_deviation'];
+          $scope.settingsLinkText = 'stats: ' + $scope.agg.stats.join(',');
+        }
       }
     }
 
@@ -57,6 +64,7 @@ function (angular, _, queryDef) {
       }, 0);
 
       metricAggs.splice(addIndex, 0, {type: "count", field: "select field", id: (id+1).toString()});
+      $scope.onChange();
     };
 
     $scope.removeMetricAgg = function() {

+ 1 - 1
public/app/plugins/datasource/elasticsearch/queryDef.js

@@ -11,7 +11,7 @@ function (_) {
       {text: "Sum of",  value: 'sum' },
       {text: "Max of",  value: 'max' },
       {text: "Min of",  value: 'min' },
-      {text: "Standard Deviations",  value: 'std_dev' },
+      {text: "Extended Stats",  value: 'extended_stats' },
       {text: "Percentiles",  value: 'percentiles' },
     ],