You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by mi...@apache.org on 2023/07/20 17:03:02 UTC
[superset] branch master updated: fix: Dashboard time grain in Table (#24746)
This is an automated email from the ASF dual-hosted git repository.
michaelsmolina 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 317aa989c2 fix: Dashboard time grain in Table (#24746)
317aa989c2 is described below
commit 317aa989c233160fcf4fe9ce3e5c1953634c5524
Author: Michael S. Molina <70...@users.noreply.github.com>
AuthorDate: Thu Jul 20 14:02:52 2023 -0300
fix: Dashboard time grain in Table (#24746)
---
.../plugins/plugin-chart-table/src/buildQuery.ts | 13 ++++---
.../plugin-chart-table/test/buildQuery.test.ts | 42 +++++++++++++++++++++-
2 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts b/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
index 211070f8bc..13bf2e9c2d 100644
--- a/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
+++ b/superset-frontend/plugins/plugin-chart-table/src/buildQuery.ts
@@ -52,10 +52,15 @@ const buildQuery: BuildQuery<TableChartFormData> = (
formData: TableChartFormData,
options,
) => {
- const { percent_metrics: percentMetrics, order_desc: orderDesc = false } =
- formData;
+ const {
+ percent_metrics: percentMetrics,
+ order_desc: orderDesc = false,
+ extra_form_data,
+ } = formData;
const queryMode = getQueryMode(formData);
const sortByMetric = ensureIsArray(formData.timeseries_limit_metric)[0];
+ const time_grain_sqla =
+ extra_form_data?.time_grain_sqla || formData.time_grain_sqla;
let formDataCopy = formData;
// never include time in raw records mode
if (queryMode === QueryMode.raw) {
@@ -102,12 +107,12 @@ const buildQuery: BuildQuery<TableChartFormData> = (
columns = columns.map(col => {
if (
isPhysicalColumn(col) &&
- formData.time_grain_sqla &&
+ time_grain_sqla &&
hasGenericChartAxes &&
formData?.temporal_columns_lookup?.[col]
) {
return {
- timeGrain: formData.time_grain_sqla,
+ timeGrain: time_grain_sqla,
columnType: 'BASE_AXIS',
sqlExpression: col,
label: col,
diff --git a/superset-frontend/plugins/plugin-chart-table/test/buildQuery.test.ts b/superset-frontend/plugins/plugin-chart-table/test/buildQuery.test.ts
index 4578dd139d..164f31aa05 100644
--- a/superset-frontend/plugins/plugin-chart-table/test/buildQuery.test.ts
+++ b/superset-frontend/plugins/plugin-chart-table/test/buildQuery.test.ts
@@ -16,7 +16,8 @@
* specific language governing permissions and limitations
* under the License.
*/
-import { QueryMode } from '@superset-ui/core';
+import { QueryMode, TimeGranularity } from '@superset-ui/core';
+import * as supersetCoreModule from '@superset-ui/core';
import buildQuery from '../src/buildQuery';
import { TableChartFormData } from '../src/types';
@@ -81,5 +82,44 @@ describe('plugin-chart-table', () => {
expect(query.columns).toEqual(['rawcol']);
expect(query.post_processing).toEqual([]);
});
+ it('should prefer extra_form_data.time_grain_sqla over formData.time_grain_sqla', () => {
+ Object.defineProperty(supersetCoreModule, 'hasGenericChartAxes', {
+ value: true,
+ });
+ const query = buildQuery({
+ ...basicFormData,
+ groupby: ['col1'],
+ query_mode: QueryMode.aggregate,
+ time_grain_sqla: TimeGranularity.MONTH,
+ extra_form_data: { time_grain_sqla: TimeGranularity.QUARTER },
+ temporal_columns_lookup: { col1: true },
+ }).queries[0];
+ expect(query.columns?.[0]).toEqual({
+ timeGrain: TimeGranularity.QUARTER,
+ columnType: 'BASE_AXIS',
+ sqlExpression: 'col1',
+ label: 'col1',
+ expressionType: 'SQL',
+ });
+ });
+ it('should fallback to formData.time_grain_sqla if extra_form_data.time_grain_sqla is not set', () => {
+ Object.defineProperty(supersetCoreModule, 'hasGenericChartAxes', {
+ value: true,
+ });
+ const query = buildQuery({
+ ...basicFormData,
+ time_grain_sqla: TimeGranularity.MONTH,
+ groupby: ['col1'],
+ query_mode: QueryMode.aggregate,
+ temporal_columns_lookup: { col1: true },
+ }).queries[0];
+ expect(query.columns?.[0]).toEqual({
+ timeGrain: TimeGranularity.MONTH,
+ columnType: 'BASE_AXIS',
+ sqlExpression: 'col1',
+ label: 'col1',
+ expressionType: 'SQL',
+ });
+ });
});
});