From ae87b0c767e758971168522f8893b52dab02e3e6 Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Mon, 12 Oct 2020 14:53:37 -0700 Subject: [PATCH] fix: questioning a few lines that force an ORDER clause (#11153) * draft: questioning a few lines that force an ORDER clause * sorting by main metric DESC by default --- .../src/views/CRUD/data/database/DatabaseList.tsx | 2 +- superset/connectors/sqla/models.py | 3 --- superset/viz.py | 4 ++++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx b/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx index 7e28541d5..4b436ec3a 100644 --- a/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx +++ b/superset-frontend/src/views/CRUD/data/database/DatabaseList.tsx @@ -180,7 +180,7 @@ function DatabaseList({ addDangerToast, addSuccessToast }: DatabaseListProps) { Header: ( {t('DML')} diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index 934da17c7..dfe6b6a96 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -1082,9 +1082,6 @@ class SqlaTable( # pylint: disable=too-many-public-methods,too-many-instance-at qry = qry.where(and_(*where_clause_and)) qry = qry.having(and_(*having_clause_and)) - if not orderby and ((is_sip_38 and metrics) or (not is_sip_38 and not columns)): - orderby = [(main_metric_expr, not order_desc)] - # To ensure correct handling of the ORDER BY labeling we need to reference the # metric instance if defined in the SELECT clause. metrics_exprs_by_label = { diff --git a/superset/viz.py b/superset/viz.py index 515b4adca..8dabed663 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -724,6 +724,10 @@ class TableViz(BaseViz): if sort_by_label not in d["metrics"]: d["metrics"].append(sort_by) d["orderby"] = [(sort_by, not fd.get("order_desc", True))] + elif d["metrics"]: + # Legacy behavior of sorting by first metric by default + first_metric = d["metrics"][0] + d["orderby"] = [(first_metric, not fd.get("order_desc", True))] return d def get_data(self, df: pd.DataFrame) -> VizData: