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

rusackas 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 796c206ee7 fix(charts): apply resample before rolling window in 
post-processing pipeline (#37987)
796c206ee7 is described below

commit 796c206ee7b2a4235b025b6e3f7d93f886750a26
Author: Varun Chawla <[email protected]>
AuthorDate: Wed Mar 4 11:25:42 2026 -0800

    fix(charts): apply resample before rolling window in post-processing 
pipeline (#37987)
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .../src/BigNumber/BigNumberWithTrendline/buildQuery.test.ts         | 4 ++--
 .../src/BigNumber/BigNumberWithTrendline/buildQuery.ts              | 2 +-
 .../plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts  | 2 +-
 .../plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts       | 6 ++++--
 .../test/MixedTimeseries/transformProps.test.ts                     | 2 +-
 .../plugin-chart-echarts/test/Timeseries/transformProps.test.ts     | 6 +++---
 6 files changed, 12 insertions(+), 10 deletions(-)

diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.test.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.test.ts
index 0ce7743b36..fa11762d03 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.test.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/buildQuery.test.ts
@@ -64,8 +64,8 @@ describe('BigNumberWithTrendline buildQuery', () => {
     expect(queryContext.queries.length).toBe(1);
     expect(queryContext.queries[0].post_processing).toEqual([
       { operation: 'pivot' },
-      { operation: 'rolling' },
       { operation: 'resample' },
+      { operation: 'rolling' },
       { operation: 'flatten' },
     ]);
   });
@@ -79,8 +79,8 @@ describe('BigNumberWithTrendline buildQuery', () => {
     expect(queryContext.queries.length).toBe(1);
     expect(queryContext.queries[0].post_processing).toEqual([
       { operation: 'pivot' },
-      { operation: 'rolling' },
       { operation: 'resample' },
+      { operation: 'rolling' },
       { operation: 'flatten' },
     ]);
   });
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 56a132dd4a..e5c7f82270 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
@@ -47,8 +47,8 @@ export default function buildQuery(formData: QueryFormData) {
         ...(timeColumn.length ? {} : { is_timeseries: true }),
         post_processing: [
           pivotOperator(formData, baseQueryObject),
-          rollingWindowOperator(formData, baseQueryObject),
           resampleOperator(formData, baseQueryObject),
+          rollingWindowOperator(formData, baseQueryObject),
           flattenOperator(formData, baseQueryObject),
         ].filter(Boolean),
       },
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
index 2173dd9908..625b932b19 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
@@ -75,9 +75,9 @@ export default function buildQuery(formData: QueryFormData) {
         time_offsets: isTimeComparison(fd, queryObject) ? fd.time_compare : [],
         post_processing: [
           pivotOperatorInRuntime,
+          resampleOperator(fd, queryObject),
           rollingWindowOperator(fd, queryObject),
           timeCompareOperator(fd, queryObject),
-          resampleOperator(fd, queryObject),
           renameOperator(fd, queryObject),
           flattenOperator(fd, queryObject),
         ],
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts 
b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
index 781d5678e2..32cbdcbde8 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
@@ -94,13 +94,15 @@ export default function buildQuery(formData: QueryFormData) 
{
         time_offsets,
         /* Note that:
           1. The resample, rolling, cum, timeCompare operators should be after 
pivot.
-          2. the flatOperator makes multiIndex Dataframe into flat Dataframe
+          2. Resample must come before rolling so that imputed values are
+             included in the rolling window calculation.
+          3. the flatOperator makes multiIndex Dataframe into flat Dataframe
         */
         post_processing: [
           pivotOperatorInRuntime,
+          resampleOperator(formData, baseQueryObject),
           rollingWindowOperator(formData, baseQueryObject),
           timeCompareOperator(formData, baseQueryObject),
-          resampleOperator(formData, baseQueryObject),
           renameOperator(formData, baseQueryObject),
           contributionOperator(formData, baseQueryObject, time_offsets),
           sortOperator(formData, baseQueryObject),
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/transformProps.test.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/transformProps.test.ts
index 57b91f8330..f17924ec66 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/transformProps.test.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/test/MixedTimeseries/transformProps.test.ts
@@ -431,5 +431,5 @@ test('should add a formula annotation when X-axis column 
has dataset-level label
   expect(formulaSeries).toBeDefined();
   expect(formulaSeries?.data).toBeDefined();
   expect(Array.isArray(formulaSeries?.data)).toBe(true);
-  expect((formulaSeries?.data as unknown[])?.length).toBeGreaterThan(0);
+  expect((formulaSeries!.data as unknown[]).length).toBeGreaterThan(0);
 });
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
index 3fd8f81480..9020c81187 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/test/Timeseries/transformProps.test.ts
@@ -306,8 +306,8 @@ describe('EchartsTimeseries transformProps', () => {
     expect(formulaSeries).toBeDefined();
     expect(formulaSeries?.data).toBeDefined();
     expect(Array.isArray(formulaSeries?.data)).toBe(true);
-    expect((formulaSeries?.data as unknown[])?.length).toBeGreaterThan(0);
-    const firstDataPoint = (formulaSeries?.data as [number, number][])?.[0];
+    expect((formulaSeries!.data as unknown[]).length).toBeGreaterThan(0);
+    const firstDataPoint = (formulaSeries!.data as [number, number][])[0];
     expect(firstDataPoint).toBeDefined();
     expect(firstDataPoint[1]).toBe(firstDataPoint[0] * 2);
   });
@@ -386,7 +386,7 @@ describe('EchartsTimeseries transformProps', () => {
       result.echartOptions.series as SeriesOption[] | undefined
     )?.find((s: SeriesOption) => s.name === 'My Formula');
     expect(formulaSeries).toBeDefined();
-    const firstDataPoint = (formulaSeries?.data as [number, number][])?.[0];
+    const firstDataPoint = (formulaSeries!.data as [number, number][])[0];
     expect(firstDataPoint).toBeDefined();
     expect(firstDataPoint[0]).toBe(firstDataPoint[1] * 2);
   });

Reply via email to