You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2018/06/01 06:34:50 UTC

[incubator-superset] branch master updated: updating adhoc metric filtering (#5105)

This is an automated email from the ASF dual-hosted git repository.

johnbodley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new cc0942a  updating adhoc metric filtering (#5105)
cc0942a is described below

commit cc0942ac988fc09538da14495f05411fcf2ac5e8
Author: Gabe Lyons <ga...@airbnb.com>
AuthorDate: Thu May 31 23:34:48 2018 -0700

    updating adhoc metric filtering (#5105)
---
 .../explore/components/MetricsControl_spec.jsx      | 21 +++++++++++++++++----
 .../explore/components/controls/MetricsControl.jsx  |  4 ++--
 superset/assets/src/explore/constants.js            |  1 +
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
index 5d2e1e3..9aa553c 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
@@ -211,8 +211,8 @@ describe('MetricsControl', () => {
 
       expect(!!wrapper.instance().selectFilterOption(
         {
-          metric_name: 'a_metric',
-          optionName: 'a_metric',
+          metric_name: 'avg__metric',
+          optionName: 'avg__metric',
           expression: 'AVG(metric)',
         },
         'a',
@@ -238,14 +238,27 @@ describe('MetricsControl', () => {
 
       expect(!!wrapper.instance().selectFilterOption(
         {
-          metric_name: 'a_metric',
-          optionName: 'a_metric',
+          metric_name: 'avg__metric',
+          optionName: 'avg__metric',
           expression: 'AVG(metric)',
         },
         'a',
       )).to.be.false;
     });
 
+    it('includes custom made simple saved metrics', () => {
+      const { wrapper } = setup();
+
+      expect(!!wrapper.instance().selectFilterOption(
+        {
+          metric_name: 'my_fancy_sum_metric',
+          optionName: 'my_fancy_sum_metric',
+          expression: 'SUM(value)',
+        },
+        'sum',
+      )).to.be.true;
+    });
+
     it('excludes auto generated metrics', () => {
       const { wrapper } = setup();
 
diff --git a/superset/assets/src/explore/components/controls/MetricsControl.jsx b/superset/assets/src/explore/components/controls/MetricsControl.jsx
index b7ed1f2..bc0b72a 100644
--- a/superset/assets/src/explore/components/controls/MetricsControl.jsx
+++ b/superset/assets/src/explore/components/controls/MetricsControl.jsx
@@ -13,7 +13,7 @@ import savedMetricType from '../../propTypes/savedMetricType';
 import adhocMetricType from '../../propTypes/adhocMetricType';
 import {
   AGGREGATES,
-  sqlaAutoGeneratedMetricRegex,
+  sqlaAutoGeneratedMetricNameRegex,
   druidAutoGeneratedMetricRegex,
 } from '../../constants';
 
@@ -210,7 +210,7 @@ export default class MetricsControl extends React.PureComponent {
     if (this.props.datasourceType === 'druid') {
       return druidAutoGeneratedMetricRegex.test(savedMetric.verbose_name);
     }
-    return sqlaAutoGeneratedMetricRegex.test(savedMetric.expression);
+    return sqlaAutoGeneratedMetricNameRegex.test(savedMetric.metric_name);
   }
 
   selectFilterOption(option, filterValue) {
diff --git a/superset/assets/src/explore/constants.js b/superset/assets/src/explore/constants.js
index 9a8acc8..39d7063 100644
--- a/superset/assets/src/explore/constants.js
+++ b/superset/assets/src/explore/constants.js
@@ -32,5 +32,6 @@ export const HAVING_OPERATORS = [
 ];
 export const MULTI_OPERATORS = [OPERATORS.in, OPERATORS['not in']];
 
+export const sqlaAutoGeneratedMetricNameRegex = /^(sum|min|max|avg|count|count_distinct)__.*$/i;
 export const sqlaAutoGeneratedMetricRegex = /^(LONG|DOUBLE|FLOAT)?(SUM|AVG|MAX|MIN|COUNT)\([A-Z0-9_."]*\)$/i;
 export const druidAutoGeneratedMetricRegex = /^(LONG|DOUBLE|FLOAT)?(SUM|MAX|MIN|COUNT)\([A-Z0-9_."]*\)$/i;

-- 
To stop receiving notification emails like this one, please contact
johnbodley@apache.org.