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
Add Tier 4 export improvements and Tier 5 metadata/annotations
Tier 4 (export/roundtrip):
- Export segments as source-level where: clauses
- Export renames as rename: (detect simple identifier dimensions)
- Export full join on conditions from relationship metadata
- join_cross: already handled in prior commit
Tier 5 (metadata/annotations):
- Non-description tags (# line_chart, # percent, etc.) stored in
dimension/measure/model metadata["tags"]
- #@ persist annotations stored in Model.metadata["persist"]
- timezone: statements stored in Model.metadata["timezone"]
- Standalone # annotations in extend blocks stored as model tags
- declare: field declarations processed as dimensions in + syntax
- _parse_annotations_full returns both description and tag list
Copy file name to clipboardExpand all lines: docs/compatibility/malloy.md
+10-7Lines changed: 10 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,10 +115,11 @@ Not mapped: `access` modifiers (`public`, `private`, `internal`), `order_by:` wi
115
115
|`# description: value` tag annotation | Supported (extracted as `description`) |
116
116
| Multiple `##` lines on one entity | Supported (joined with spaces) |
117
117
| Statement-level `#` tags (before `source:`) | Supported (applied as source description if the source itself has none) |
118
-
|`# tag_name` (non-description tags) | Partial support: parsed without error but only `desc:` and `description:` prefixed tags are extracted. Other tags are discarded. |
119
-
|`#@ persist` and `#@ persist name=...`| Unsupported (parsed by the grammar but not recognized by the visitor). |
118
+
|`# tag_name` (non-description tags) | Supported (stored in `metadata["tags"]` on dimensions, measures, and models; includes `line_chart`, `bar_chart`, `percent`, `currency`, etc.) |
119
+
|`#@ persist` and `#@ persist name=...`| Supported (stored in `Model.metadata["persist"]` and `metadata["persist_name"]`) |
120
+
| Standalone `#` annotations in extend blocks | Supported (stored in `Model.metadata["tags"]` via `DefExploreAnnotationContext`) |
|`join_cross:` export | Supported (one_to_one relationships exported as `join_cross:`) |
305
-
|`rename:` export |Partial support: renames are captured as dimensions during parsing; exported as `dimension:` not `rename:`|
308
+
|`rename:` export |Supported (simple identifier dimensions detected and exported as `rename: new is old`)|
306
309
|`view:` export | Unsupported (views are not captured during parsing) |
307
310
308
311
---
309
312
310
313
## Experimental and Advanced Features
311
314
312
-
Unsupported. `##! experimental{...}` pragma annotations, `compose()`for composite sources, `timezone:` statements, `sample:` specifications, and `declare:`field declarations are all parsed by the grammar without error but not processed by the visitor.
315
+
Partially supported. `timezone:` statements are stored in `Model.metadata["timezone"]`. `declare:` field declarations are processed as dimensions in old `+` syntax blocks. `compose()`sources process the first composed source. `##! experimental{...}` pragma annotations and `sample:`specifications are parsed by the grammar without error but not processed by the visitor.
0 commit comments