diff --git a/superset/common/query_object.py b/superset/common/query_object.py
index dad50ea48d063..82110878d6d7b 100644
--- a/superset/common/query_object.py
+++ b/superset/common/query_object.py
@@ -81,7 +81,14 @@ def __init__(
         self.time_shift = utils.parse_human_timedelta(time_shift)
         self.groupby = groupby or []
 
-        self.metrics = [utils.get_metric_name(metric) for metric in metrics]
+        # Temporal solution for backward compatability issue due the new format of
+        # non-ad-hoc metric which needs to adhere to superset-ui per
+        # https://git.io/Jvm7P.
+        self.metrics = [
+            metric if "expressionType" in metric else metric["label"]  # type: ignore
+            for metric in metrics
+        ]
+
         self.row_limit = row_limit
         self.filter = filters or []
         self.timeseries_limit = timeseries_limit
diff --git a/tests/core_tests.py b/tests/core_tests.py
index cc53141b78337..566317ecabe55 100644
--- a/tests/core_tests.py
+++ b/tests/core_tests.py
@@ -109,7 +109,7 @@ def _get_query_context_dict(self) -> Dict[str, Any]:
                 {
                     "granularity": "ds",
                     "groupby": ["name"],
-                    "metrics": ["sum__num"],
+                    "metrics": [{"label": "sum__num"}],
                     "filters": [],
                     "row_limit": 100,
                 }