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 0a4ecca9f2 fix: custom SQL in the XAxis (#21847)
0a4ecca9f2 is described below

commit 0a4ecca9f259e2ee9cff27a879f2a889f876c7d7
Author: Yongjie Zhao <[email protected]>
AuthorDate: Wed Oct 19 11:40:52 2022 +0800

    fix: custom SQL in the XAxis (#21847)
---
 .../src/operators/pivotOperator.ts                       |  4 ++--
 .../src/operators/prophetOperator.ts                     |  4 ++--
 .../src/operators/renameOperator.ts                      |  4 ++--
 .../src/operators/timeComparePivotOperator.ts            |  4 ++--
 .../packages/superset-ui-core/src/query/getXAxis.ts      | 16 ++++++++++++++--
 .../packages/superset-ui-core/src/query/index.ts         |  7 ++++++-
 .../packages/superset-ui-core/src/types/index.ts         |  2 ++
 .../src/BigNumber/BigNumberWithTrendline/buildQuery.ts   |  6 ++++--
 .../BigNumber/BigNumberWithTrendline/transformProps.ts   |  4 ++--
 .../src/MixedTimeseries/buildQuery.ts                    |  6 ++++--
 .../src/MixedTimeseries/transformProps.ts                |  6 ++++--
 .../plugin-chart-echarts/src/Timeseries/buildQuery.ts    |  6 ++++--
 .../src/Timeseries/transformProps.ts                     |  4 ++--
 13 files changed, 50 insertions(+), 23 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/pivotOperator.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/pivotOperator.ts
index bd929dd774..4db7e4125a 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/pivotOperator.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/pivotOperator.ts
@@ -21,7 +21,7 @@ import {
   getColumnLabel,
   getMetricLabel,
   PostProcessingPivot,
-  getXAxis,
+  getXAxisLabel,
 } from '@superset-ui/core';
 import { PostProcessingFactory } from './types';
 
@@ -30,7 +30,7 @@ export const pivotOperator: 
PostProcessingFactory<PostProcessingPivot> = (
   queryObject,
 ) => {
   const metricLabels = ensureIsArray(queryObject.metrics).map(getMetricLabel);
-  const xAxis = getXAxis(formData);
+  const xAxis = getXAxisLabel(formData);
 
   if (xAxis && metricLabels.length) {
     return {
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/prophetOperator.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/prophetOperator.ts
index da651ba12c..274cadb4b6 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/prophetOperator.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/prophetOperator.ts
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitationsxw
  * under the License.
  */
-import { PostProcessingProphet, getXAxis } from '@superset-ui/core';
+import { PostProcessingProphet, getXAxisLabel } from '@superset-ui/core';
 import { PostProcessingFactory } from './types';
 
 /* eslint-disable @typescript-eslint/no-unused-vars */
@@ -24,7 +24,7 @@ export const prophetOperator: 
PostProcessingFactory<PostProcessingProphet> = (
   formData,
   queryObject,
 ) => {
-  const xAxis = getXAxis(formData);
+  const xAxis = getXAxisLabel(formData);
   if (formData.forecastEnabled && xAxis) {
     return {
       operation: 'prophet',
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/renameOperator.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/renameOperator.ts
index c51e588cf3..fb254e0469 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/renameOperator.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/renameOperator.ts
@@ -22,7 +22,7 @@ import {
   ensureIsArray,
   getMetricLabel,
   ComparisionType,
-  getXAxis,
+  getXAxisLabel,
 } from '@superset-ui/core';
 import { PostProcessingFactory } from './types';
 import { getMetricOffsetsMap, isTimeComparison } from './utils';
@@ -34,7 +34,7 @@ export const renameOperator: 
PostProcessingFactory<PostProcessingRename> = (
   const metrics = ensureIsArray(queryObject.metrics);
   const columns = ensureIsArray(queryObject.columns);
   const { truncate_metric } = formData;
-  const xAxis = getXAxis(formData);
+  const xAxis = getXAxisLabel(formData);
   // remove or rename top level of column name(metric name) in the MultiIndex 
when
   // 1) only 1 metric
   // 2) exist dimentsion
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/timeComparePivotOperator.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/timeComparePivotOperator.ts
index d4ecbf9b62..d2b8d0d81d 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/operators/timeComparePivotOperator.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/operators/timeComparePivotOperator.ts
@@ -22,7 +22,7 @@ import {
   getColumnLabel,
   NumpyFunction,
   PostProcessingPivot,
-  getXAxis,
+  getXAxisLabel,
 } from '@superset-ui/core';
 import { getMetricOffsetsMap, isTimeComparison } from './utils';
 import { PostProcessingFactory } from './types';
@@ -30,7 +30,7 @@ import { PostProcessingFactory } from './types';
 export const timeComparePivotOperator: 
PostProcessingFactory<PostProcessingPivot> =
   (formData, queryObject) => {
     const metricOffsetMap = getMetricOffsetsMap(formData, queryObject);
-    const xAxis = getXAxis(formData);
+    const xAxis = getXAxisLabel(formData);
 
     if (isTimeComparison(formData, queryObject) && xAxis) {
       const aggregates = Object.fromEntries(
diff --git a/superset-frontend/packages/superset-ui-core/src/query/getXAxis.ts 
b/superset-frontend/packages/superset-ui-core/src/query/getXAxis.ts
index 8510f7d694..7c329c2a8b 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/getXAxis.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/getXAxis.ts
@@ -23,6 +23,8 @@ import {
   getColumnLabel,
   isQueryFormColumn,
   QueryFormData,
+  QueryFormColumn,
+  Optional,
 } from '@superset-ui/core';
 
 export const isXAxisSet = (formData: QueryFormData) =>
@@ -32,14 +34,24 @@ export const hasGenericChartAxes = isFeatureEnabled(
   FeatureFlag.GENERIC_CHART_AXES,
 );
 
-export const getXAxis = (formData: QueryFormData): string | undefined => {
+export const getXAxisColumn = (
+  formData: QueryFormData,
+): Optional<QueryFormColumn> => {
   // The formData should be "raw form_data" -- the snake_case version of 
formData rather than camelCase.
   if (!(formData.granularity_sqla || formData.x_axis)) {
     return undefined;
   }
 
   if (isXAxisSet(formData)) {
-    return getColumnLabel(formData.x_axis);
+    return formData.x_axis;
   }
   return DTTM_ALIAS;
 };
+
+export const getXAxisLabel = (formData: QueryFormData): Optional<string> => {
+  const col = getXAxisColumn(formData);
+  if (col) {
+    return getColumnLabel(col);
+  }
+  return undefined;
+};
diff --git a/superset-frontend/packages/superset-ui-core/src/query/index.ts 
b/superset-frontend/packages/superset-ui-core/src/query/index.ts
index 21c775ad6b..bfc75da205 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/index.ts
@@ -29,7 +29,12 @@ export { default as getMetricLabel } from './getMetricLabel';
 export { default as DatasourceKey } from './DatasourceKey';
 export { default as normalizeOrderBy } from './normalizeOrderBy';
 export { normalizeTimeColumn } from './normalizeTimeColumn';
-export { getXAxis, isXAxisSet, hasGenericChartAxes } from './getXAxis';
+export {
+  getXAxisLabel,
+  getXAxisColumn,
+  isXAxisSet,
+  hasGenericChartAxes,
+} from './getXAxis';
 
 export * from './types/AnnotationLayer';
 export * from './types/QueryFormData';
diff --git a/superset-frontend/packages/superset-ui-core/src/types/index.ts 
b/superset-frontend/packages/superset-ui-core/src/types/index.ts
index 7c75ad42cc..a1c527afd6 100644
--- a/superset-frontend/packages/superset-ui-core/src/types/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/types/index.ts
@@ -20,4 +20,6 @@ export * from '../query/types';
 
 export type Maybe<T> = T | null;
 
+export type Optional<T> = T | undefined;
+
 export type ValueOf<T> = T[keyof T];
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 19ad713a26..7a0ba462b8 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
@@ -19,7 +19,7 @@
 import {
   buildQueryContext,
   ensureIsArray,
-  getXAxis,
+  getXAxisColumn,
   isXAxisSet,
   QueryFormData,
 } from '@superset-ui/core';
@@ -35,7 +35,9 @@ export default function buildQuery(formData: QueryFormData) {
     {
       ...baseQueryObject,
       columns: [
-        ...(isXAxisSet(formData) ? ensureIsArray(getXAxis(formData)) : []),
+        ...(isXAxisSet(formData)
+          ? ensureIsArray(getXAxisColumn(formData))
+          : []),
       ],
       ...(isXAxisSet(formData) ? {} : { is_timeseries: true }),
       post_processing: [
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/transformProps.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/transformProps.ts
index 86615d376e..96a7d38e98 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/transformProps.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/BigNumber/BigNumberWithTrendline/transformProps.ts
@@ -26,7 +26,7 @@ import {
   smartDateVerboseFormatter,
   NumberFormatter,
   TimeFormatter,
-  getXAxis,
+  getXAxisLabel,
 } from '@superset-ui/core';
 import { EChartsCoreOption, graphic } from 'echarts';
 import {
@@ -102,7 +102,7 @@ export default function transformProps(
   const { r, g, b } = colorPicker;
   const mainColor = `rgb(${r}, ${g}, ${b})`;
 
-  const timeColumn = getXAxis(rawFormData) as string;
+  const timeColumn = getXAxisLabel(rawFormData) as string;
   let trendLineData;
   let percentChange = 0;
   let bigNumber = data.length === 0 ? null : data[0][metricName];
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 d22772c070..5b74e0aeb1 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/buildQuery.ts
@@ -23,8 +23,8 @@ import {
   PostProcessingPivot,
   QueryFormData,
   QueryObject,
-  getXAxis,
   isXAxisSet,
+  getXAxisColumn,
 } from '@superset-ui/core';
 import {
   pivotOperator,
@@ -54,7 +54,9 @@ export default function buildQuery(formData: QueryFormData) {
       const queryObject = {
         ...baseQueryObject,
         columns: [
-          ...(isXAxisSet(formData) ? ensureIsArray(getXAxis(formData)) : []),
+          ...(isXAxisSet(formData)
+            ? ensureIsArray(getXAxisColumn(formData))
+            : []),
           ...ensureIsArray(fd.groupby),
         ],
         series_columns: fd.groupby,
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
index 14630a0f13..b06516168f 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/MixedTimeseries/transformProps.ts
@@ -29,7 +29,7 @@ import {
   QueryFormData,
   TimeseriesChartDataResponseResult,
   TimeseriesDataRecord,
-  getXAxis,
+  getXAxisLabel,
 } from '@superset-ui/core';
 import { EChartsCoreOption, SeriesOption } from 'echarts';
 import {
@@ -152,7 +152,9 @@ export default function transformProps(
 
   const colorScale = CategoricalColorNamespace.getScale(colorScheme as string);
 
-  const xAxisCol = getXAxis(chartProps.rawFormData as QueryFormData) as string;
+  const xAxisCol = getXAxisLabel(
+    chartProps.rawFormData as QueryFormData,
+  ) as string;
 
   const rebasedDataA = rebaseForecastDatum(data1, verboseMap);
   const rawSeriesA = extractSeries(rebasedDataA, {
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 3e563d8833..0ddb1f53fe 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/buildQuery.ts
@@ -22,7 +22,7 @@ import {
   normalizeOrderBy,
   PostProcessingPivot,
   QueryFormData,
-  getXAxis,
+  getXAxisColumn,
   isXAxisSet,
 } from '@superset-ui/core';
 import {
@@ -72,7 +72,9 @@ export default function buildQuery(formData: QueryFormData) {
       {
         ...baseQueryObject,
         columns: [
-          ...(isXAxisSet(formData) ? ensureIsArray(getXAxis(formData)) : []),
+          ...(isXAxisSet(formData)
+            ? ensureIsArray(getXAxisColumn(formData))
+            : []),
           ...ensureIsArray(groupby),
         ],
         series_columns: groupby,
diff --git 
a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
 
b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
index 22fcd8ccff..6cdad4a4ab 100644
--- 
a/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
+++ 
b/superset-frontend/plugins/plugin-chart-echarts/src/Timeseries/transformProps.ts
@@ -28,8 +28,8 @@ import {
   isTimeseriesAnnotationLayer,
   TimeseriesChartDataResponseResult,
   t,
-  getXAxis,
   AxisType,
+  getXAxisLabel,
 } from '@superset-ui/core';
 import { isDerivedSeries } from '@superset-ui/chart-controls';
 import { EChartsCoreOption, SeriesOption } from 'echarts';
@@ -148,7 +148,7 @@ export default function transformProps(
 
   const colorScale = CategoricalColorNamespace.getScale(colorScheme as string);
   const rebasedData = rebaseForecastDatum(data, verboseMap);
-  const xAxisCol = getXAxis(chartProps.rawFormData) as string;
+  const xAxisCol = getXAxisLabel(chartProps.rawFormData) as string;
   const isHorizontal = orientation === OrientationType.horizontal;
   const { totalStackedValues, thresholdValues } = extractDataTotalValues(
     rebasedData,

Reply via email to