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

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


The following commit(s) were added to refs/heads/master by this push:
     new 2daa071633 fix: big number with trendline can't calculate cumsum 
(#19542)
2daa071633 is described below

commit 2daa07163326b8555488dab523c5479cf92821cf
Author: Yongjie Zhao <[email protected]>
AuthorDate: Wed Apr 6 19:23:01 2022 +0800

    fix: big number with trendline can't calculate cumsum (#19542)
---
 .../BigNumber/BigNumberWithTrendline/buildQuery.ts | 56 +++++-----------------
 .../BigNumberWithTrendline/controlPanel.tsx        | 46 ++++++++++++++++++
 2 files changed, 59 insertions(+), 43 deletions(-)

diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.ts
index d55cf4664d..de75b50838 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.ts
@@ -18,63 +18,33 @@
  */
 import {
   buildQueryContext,
-  PostProcessingResample,
+  DTTM_ALIAS,
   QueryFormData,
 } from '@superset-ui/core';
 import {
   flattenOperator,
+  pivotOperator,
+  resampleOperator,
   rollingWindowOperator,
-  sortOperator,
 } from '@superset-ui/chart-controls';
 
-const TIME_GRAIN_MAP: Record<string, string> = {
-  PT1S: 'S',
-  PT1M: 'min',
-  PT5M: '5min',
-  PT10M: '10min',
-  PT15M: '15min',
-  PT30M: '30min',
-  PT1H: 'H',
-  P1D: 'D',
-  P1M: 'MS',
-  P3M: 'QS',
-  P1Y: 'AS',
-  // TODO: these need to be mapped carefully, as the first day of week
-  //  can vary from engine to engine
-  // P1W: 'W',
-  // '1969-12-28T00:00:00Z/P1W': 'W',
-  // '1969-12-29T00:00:00Z/P1W': 'W',
-  // 'P1W/1970-01-03T00:00:00Z': 'W',
-  // 'P1W/1970-01-04T00:00:00Z': 'W',
-};
-
 export default function buildQuery(formData: QueryFormData) {
   return buildQueryContext(formData, baseQueryObject => {
-    // todo: move into full advanced analysis section here
-    const rollingProc = rollingWindowOperator(formData, baseQueryObject);
-    const { time_grain_sqla } = formData;
-    let resampleProc: PostProcessingResample;
-    if (rollingProc && time_grain_sqla) {
-      const rule = TIME_GRAIN_MAP[time_grain_sqla];
-      if (rule) {
-        resampleProc = {
-          operation: 'resample',
-          options: {
-            method: 'asfreq',
-            rule,
-            fill_value: null,
-          },
-        };
-      }
-    }
+    const { x_axis } = formData;
+    const is_timeseries = x_axis === DTTM_ALIAS || !x_axis;
+
     return [
       {
         ...baseQueryObject,
         is_timeseries: true,
         post_processing: [
-          sortOperator(formData, baseQueryObject),
-          resampleProc,
-          rollingProc,
+          pivotOperator(formData, {
+            ...baseQueryObject,
+            index: x_axis,
+            is_timeseries,
+          }),
+          rollingWindowOperator(formData, baseQueryObject),
+          resampleOperator(formData, baseQueryObject),
           flattenOperator(formData, baseQueryObject),
         ],
       },
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
index c1378543f6..6b99af91ce 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/controlPanel.tsx
@@ -217,6 +217,52 @@ const config: ControlPanelConfig = {
             },
           },
         ],
+        // eslint-disable-next-line react/jsx-key
+        [<h1 className="section-header">{t('Resample')}</h1>],
+        [
+          {
+            name: 'resample_rule',
+            config: {
+              type: 'SelectControl',
+              freeForm: true,
+              label: t('Rule'),
+              default: null,
+              choices: [
+                ['1T', '1 minutely frequency'],
+                ['1H', '1 hourly frequency'],
+                ['1D', '1 calendar day frequency'],
+                ['7D', '7 calendar day frequency'],
+                ['1MS', '1 month start frequency'],
+                ['1M', '1 month end frequency'],
+                ['1AS', '1 year start frequency'],
+                ['1A', '1 year end frequency'],
+              ],
+              description: t('Pandas resample rule'),
+            },
+          },
+        ],
+        [
+          {
+            name: 'resample_method',
+            config: {
+              type: 'SelectControl',
+              freeForm: true,
+              label: t('Fill method'),
+              default: null,
+              choices: [
+                ['asfreq', 'Null imputation'],
+                ['zerofill', 'Zero imputation'],
+                ['linear', 'Linear interpolation'],
+                ['ffill', 'Forward values'],
+                ['bfill', 'Backward values'],
+                ['median', 'Median values'],
+                ['mean', 'Mean values'],
+                ['sum', 'Sum values'],
+              ],
+              description: t('Pandas resample method'),
+            },
+          },
+        ],
       ],
     },
   ],

Reply via email to