mirror of
https://github.com/apache/superset.git
synced 2026-05-07 00:44:26 +00:00
fix: Chart series limit doesn't work for some databases (#25150)
This commit is contained in:
committed by
Elizabeth Thompson
parent
ccf73b2608
commit
fedcd24d87
@@ -100,6 +100,7 @@ config = app.config
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
VIRTUAL_TABLE_ALIAS = "virtual_table"
|
||||
SERIES_LIMIT_SUBQ_ALIAS = "series_limit"
|
||||
ADVANCED_DATA_TYPES = config["ADVANCED_DATA_TYPES"]
|
||||
|
||||
|
||||
@@ -1387,7 +1388,13 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
|
||||
}
|
||||
columns = columns or []
|
||||
groupby = groupby or []
|
||||
series_column_names = utils.get_column_names(series_columns or [])
|
||||
db_engine_spec = self.db_engine_spec
|
||||
series_column_labels = [
|
||||
db_engine_spec.make_label_compatible(column)
|
||||
for column in utils.get_column_names(
|
||||
columns=series_columns or [],
|
||||
)
|
||||
]
|
||||
# deprecated, to be removed in 2.0
|
||||
if is_timeseries and timeseries_limit:
|
||||
series_limit = timeseries_limit
|
||||
@@ -1400,8 +1407,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
|
||||
template_kwargs["removed_filters"] = removed_filters
|
||||
template_kwargs["applied_filters"] = applied_template_filters
|
||||
template_processor = self.get_template_processor(**template_kwargs)
|
||||
db_engine_spec = self.db_engine_spec
|
||||
prequeries: List[str] = []
|
||||
prequeries: list[str] = []
|
||||
orderby = orderby or []
|
||||
need_groupby = bool(metrics is not None or groupby)
|
||||
metrics = metrics or []
|
||||
@@ -1541,8 +1547,8 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
|
||||
)
|
||||
groupby_all_columns[outer.name] = outer
|
||||
if (
|
||||
is_timeseries and not series_column_names
|
||||
) or outer.name in series_column_names:
|
||||
is_timeseries and not series_column_labels
|
||||
) or outer.name in series_column_labels:
|
||||
groupby_series_columns[outer.name] = outer
|
||||
select_exprs.append(outer)
|
||||
elif columns:
|
||||
@@ -1922,7 +1928,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
|
||||
col_name = db_engine_spec.make_label_compatible(gby_name + "__")
|
||||
on_clause.append(gby_obj == sa.column(col_name))
|
||||
|
||||
tbl = tbl.join(subq.alias(), and_(*on_clause))
|
||||
tbl = tbl.join(subq.alias(SERIES_LIMIT_SUBQ_ALIAS), and_(*on_clause))
|
||||
|
||||
# run prequery to get top groups
|
||||
prequery_obj = {
|
||||
|
||||
Reference in New Issue
Block a user