mirror of https://github.com/apache/superset.git
Merge 037e510031
into f5843fe588
This commit is contained in:
commit
fbd0fdccf6
|
@ -220,6 +220,7 @@ export default function transformProps(
|
|||
);
|
||||
|
||||
const isMultiSeries = groupby?.length || metrics?.length > 1;
|
||||
const { timeseriesLimitMetric = '' } = formData;
|
||||
|
||||
const [rawSeries, sortedTotalValues, minPositiveValue] = extractSeries(
|
||||
rebasedData,
|
||||
|
@ -236,6 +237,7 @@ export default function transformProps(
|
|||
xAxisSortSeriesAscending: isMultiSeries
|
||||
? xAxisSortSeriesAscending
|
||||
: undefined,
|
||||
timeseriesLimitMetric,
|
||||
},
|
||||
);
|
||||
const showValueIndexes = extractShowValueIndexes(rawSeries, {
|
||||
|
|
|
@ -264,6 +264,7 @@ export function extractSeries(
|
|||
sortSeriesAscending?: boolean;
|
||||
xAxisSortSeries?: SortSeriesType;
|
||||
xAxisSortSeriesAscending?: boolean;
|
||||
timeseriesLimitMetric?: any;
|
||||
} = {},
|
||||
): [SeriesOption[], number[], number | undefined] {
|
||||
const {
|
||||
|
@ -278,6 +279,7 @@ export function extractSeries(
|
|||
sortSeriesAscending,
|
||||
xAxisSortSeries,
|
||||
xAxisSortSeriesAscending,
|
||||
timeseriesLimitMetric,
|
||||
} = opts;
|
||||
if (data.length === 0) return [[], [], undefined];
|
||||
const rows: DataRecord[] = data.map(datum => ({
|
||||
|
@ -292,7 +294,9 @@ export function extractSeries(
|
|||
sortSeriesAscending,
|
||||
);
|
||||
const sortedRows =
|
||||
isDefined(xAxisSortSeries) && isDefined(xAxisSortSeriesAscending)
|
||||
isDefined(xAxisSortSeries) &&
|
||||
isDefined(xAxisSortSeriesAscending) &&
|
||||
!timeseriesLimitMetric
|
||||
? sortRows(
|
||||
rows,
|
||||
totalStackedValues,
|
||||
|
|
|
@ -251,13 +251,36 @@ class QueryContextProcessor:
|
|||
|
||||
query += ";\n\n".join(queries)
|
||||
query += ";\n\n"
|
||||
|
||||
timeseries_limit_metric = None
|
||||
x_axis_index = None
|
||||
sort_order = None
|
||||
# Here we extract the x axis as its being used as index
|
||||
# in the pivot operation
|
||||
if self._query_context and self._query_context.form_data:
|
||||
x_axis_index = self._query_context.form_data.get("x_axis")
|
||||
if isinstance(x_axis_index, dict):
|
||||
x_axis_index = x_axis_index.get("label")
|
||||
timeseries_limit_metric = self._query_context.form_data.get(
|
||||
"timeseries_limit_metric"
|
||||
)
|
||||
if timeseries_limit_metric and x_axis_index is not None:
|
||||
sort_order = df[x_axis_index].unique().tolist()
|
||||
sort_order = [item for item in sort_order if item is not None]
|
||||
# Re-raising QueryObjectValidationError
|
||||
try:
|
||||
df = query_object.exec_post_processing(df)
|
||||
except InvalidPostProcessingError as ex:
|
||||
raise QueryObjectValidationError(ex.message) from ex
|
||||
|
||||
if (
|
||||
timeseries_limit_metric
|
||||
and x_axis_index is not None
|
||||
and sort_order is not None
|
||||
):
|
||||
df[x_axis_index] = pd.Categorical(
|
||||
df[x_axis_index], categories=sort_order, ordered=True
|
||||
)
|
||||
df = df.sort_values(x_axis_index)
|
||||
df = df.reset_index(drop=True)
|
||||
result.df = df
|
||||
result.query = query
|
||||
result.from_dttm = query_object.from_dttm
|
||||
|
|
Loading…
Reference in New Issue