You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Expand LookML adapter surface area
Wire up previously unsupported LookML features to existing core model
capabilities: view extends/inheritance resolution, refinement merging,
label/value_format/drill_fields on dimensions and measures, hidden/
group_label/tags via meta dict, explore from:/description/label/
sql_always_where/always_filter, join type (left_outer/inner/full_outer/
cross), percentile and list measure types.
* Fix three LookML adapter issues from PR review
1. Refinement scalar preservation: build Model kwargs conditionally so
unset scalars (table, description, primary_key) stay out of
model_fields_set and don't overwrite the base view during merge.
2. Explore alias in sql_on: when an explore uses from: aliasing,
_parse_join now accepts both the view name and the explore alias
when matching references in sql_on, preventing silent join drops.
3. Always filter view qualifier: strip view.field qualifiers (e.g.
fact_orders.created_date -> created_date) before generating SQL,
avoiding double-qualified {model}.view.col expressions.
* Fix three more LookML adapter issues from PR review
1. sql_always_where ref translation: convert ${view.field} references
to {model}.field so generated SQL is valid, not raw LookML syntax.
2. Resilient inheritance resolution: pre-filter to models whose full
extends chain is present so one missing/circular parent doesn't
block valid chains from resolving.
3. Percentile guard: skip percentile measures with no SQL instead of
constructing a Metric(type="derived", sql=None) that fails validation.
|`view: +name {}` (refinements) | Partial support: parsed as a separate model named `"+name"`. First refinement kept, duplicates skipped. Fields are not merged into the base view. |
20
-
|`extension: required` (abstract views) | Partial support: view parses normally but the flag is not stored. No validation prevents direct use. |
21
-
|`extends: [base_view]`| Partial support: extending view is parsed with only its own fields. Inherited fields from the base view are not merged. Each view in an extends chain is independent. |
19
+
|`view: +name {}` (refinements) | Supported (merged into the base view; multiple refinements are applied in order) |
20
+
|`extension: required` (abstract views) | Supported (stored in `model.meta["extension_required"]`) |
21
+
|`extends: [base_view]`| Supported (inheritance resolved using `core/inheritance.py`; child inherits all parent fields with child values taking precedence) |
22
+
|`label`| Supported (stored in `model.meta["label"]`) |
23
+
|`hidden`| Supported (stored in `model.meta["hidden"]`) |
24
+
|`tags`| Supported (stored in `model.meta["tags"]`) |
22
25
23
-
Not mapped: `hidden`, `label`, `tags`.
26
+
Multi-extends (`extends: [a, b]`) uses only the first parent. This is rare in practice.
24
27
25
28
---
26
29
@@ -42,9 +45,17 @@ Not mapped: `hidden`, `label`, `tags`.
0 commit comments