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);
});