This is an automated email from the ASF dual-hosted git repository.

beto pushed a commit to branch explorable
in repository https://gitbox.apache.org/repos/asf/superset.git

commit befcf96027b844b6b7323c7fb1a407ed51c5c73d
Author: Beto Dealmeida <[email protected]>
AuthorDate: Mon Oct 20 19:00:58 2025 -0400

    WIP
---
 superset-frontend/package-lock.json |  2 +-
 superset/semantic_layers/mapper.py  | 26 ++++++++++++++++++++++++--
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/superset-frontend/package-lock.json 
b/superset-frontend/package-lock.json
index 06f036e7c3..c2aa3f7e34 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -64148,7 +64148,7 @@
         "reselect": "^5.1.1",
         "rison": "^0.1.1",
         "seedrandom": "^3.0.5",
-        "xss": "^1.0.14"
+        "xss": "^1.0.15"
       },
       "devDependencies": {
         "@emotion/styled": "^11.14.1",
diff --git a/superset/semantic_layers/mapper.py 
b/superset/semantic_layers/mapper.py
index 59d05d101f..f54428766f 100644
--- a/superset/semantic_layers/mapper.py
+++ b/superset/semantic_layers/mapper.py
@@ -34,15 +34,25 @@ def map_query_object(query_object: QueryObject) -> 
SemanticQuery:
     and more semantic layer-centric. This simplifies the process of adding new 
semantic
     layers to Superset, by providing a domain-specific representation of 
queries.
     """
+    semantic_view = query_object.datasource.semantic_view
+    validate_query_object(query_object, semantic_view)
+
+    all_dimensions = {dimension.id: dimension for dimension in 
semantic_view.dimensions}
+    all_metrics = {metric.id: metric for metric in semantic_view.metrics}
+
     metrics: set[Metric] = set()
     dimensions: set[Dimension] = set()
     filters: set[Filter] = set()
     order = None
 
     group_limit = GroupLimit(
-        dimensions=[],
+        dimensions=[
+            all_dimensions[dim_id]
+            for dim_id in query_object.columns
+            if dim_id in all_dimensions
+        ],
         top=query_object.series_limit,
-        metric=None,
+        metric=all_metrics.get(query_object.series_limit_metric),
         direction=(
             OrderDirection.DESC if query_object.order_desc else 
OrderDirection.ASC
         ),
@@ -58,3 +68,15 @@ def map_query_object(query_object: QueryObject) -> 
SemanticQuery:
         offset=query_object.row_offset,
         group_limit=group_limit,
     )
+
+
+def validate_query_object(
+    query_object: QueryObject,
+    semantic_view: SemanticViewProtocol,
+) -> None:
+    """
+    Validate that the `QueryObject` is compatible with the `SemanticView`.
+
+    For example, semantic view might not support adhoc expressions in filters 
or
+    metrics.
+    """

Reply via email to