Skip to content

Commit bbfaeb0

Browse files
fix: Chart series limit doesn't work for some databases (apache#25150)
1 parent de9515c commit bbfaeb0

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

superset/models/helpers.py

+11-5
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
logger = logging.getLogger(__name__)
9999

100100
VIRTUAL_TABLE_ALIAS = "virtual_table"
101+
SERIES_LIMIT_SUBQ_ALIAS = "series_limit"
101102
ADVANCED_DATA_TYPES = config["ADVANCED_DATA_TYPES"]
102103

103104

@@ -1463,7 +1464,13 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma
14631464
groupby = groupby or []
14641465
rejected_adhoc_filters_columns: list[Union[str, ColumnTyping]] = []
14651466
applied_adhoc_filters_columns: list[Union[str, ColumnTyping]] = []
1466-
series_column_names = utils.get_column_names(series_columns or [])
1467+
db_engine_spec = self.db_engine_spec
1468+
series_column_labels = [
1469+
db_engine_spec.make_label_compatible(column)
1470+
for column in utils.get_column_names(
1471+
columns=series_columns or [],
1472+
)
1473+
]
14671474
# deprecated, to be removed in 2.0
14681475
if is_timeseries and timeseries_limit:
14691476
series_limit = timeseries_limit
@@ -1476,7 +1483,6 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma
14761483
template_kwargs["removed_filters"] = removed_filters
14771484
template_kwargs["applied_filters"] = applied_template_filters
14781485
template_processor = self.get_template_processor(**template_kwargs)
1479-
db_engine_spec = self.db_engine_spec
14801486
prequeries: list[str] = []
14811487
orderby = orderby or []
14821488
need_groupby = bool(metrics is not None or groupby)
@@ -1620,8 +1626,8 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma
16201626
)
16211627
groupby_all_columns[outer.name] = outer
16221628
if (
1623-
is_timeseries and not series_column_names
1624-
) or outer.name in series_column_names:
1629+
is_timeseries and not series_column_labels
1630+
) or outer.name in series_column_labels:
16251631
groupby_series_columns[outer.name] = outer
16261632
select_exprs.append(outer)
16271633
elif columns:
@@ -2012,7 +2018,7 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma
20122018
col_name = db_engine_spec.make_label_compatible(gby_name + "__")
20132019
on_clause.append(gby_obj == sa.column(col_name))
20142020

2015-
tbl = tbl.join(subq.alias(), and_(*on_clause))
2021+
tbl = tbl.join(subq.alias(SERIES_LIMIT_SUBQ_ALIAS), and_(*on_clause))
20162022
else:
20172023
if series_limit_metric:
20182024
orderby = [

0 commit comments

Comments
 (0)