Summary
When a field is dropped (e.g. no DATABRICKS dialect), cascade-drop fails to detect a metric that references it in a different case. Databricks SQL identifiers are case-insensitive, but the cascade-drop regexes are case-sensitive, so a metric like COUNT(DISTINCT REGION_NAME) survives referencing a dropped region_name.
Root cause
converters/databricks/src/ossie_databricks/ossie_to_metric_view.py (_references_dropped):
if re.search(r"measure\(\s*" + re.escape(m) + r"\s*\)", expr): # no re.IGNORECASE
return m
if d != self_name and re.search(r"(?<![\w.])" + re.escape(d) + r"(?![\w.])", expr): # no re.IGNORECASE
return d
The converter normalizes identifier case elsewhere (L99-101, 158-164, 545-549) but not here.
Repro (real converter, HEAD ab8fc1a — EXECUTED)
Model: region_name (T_SQL-only → dropped) + metric region_count = COUNT(DISTINCT REGION_NAME) (DATABRICKS). Actual output:
measures:
- name: region_count
expr: COUNT(DISTINCT REGION_NAME) # dangling reference to a dropped field
Warning emitted: [field 'region_name'] no DATABRICKS/ANSI_SQL dialect; dropping field. The metric should have been cascade-dropped.
Suggested fix
Add re.IGNORECASE to both patterns in _references_dropped.
Summary
When a field is dropped (e.g. no DATABRICKS dialect), cascade-drop fails to detect a metric that references it in a different case. Databricks SQL identifiers are case-insensitive, but the cascade-drop regexes are case-sensitive, so a metric like
COUNT(DISTINCT REGION_NAME)survives referencing a droppedregion_name.Root cause
converters/databricks/src/ossie_databricks/ossie_to_metric_view.py(_references_dropped):The converter normalizes identifier case elsewhere (L99-101, 158-164, 545-549) but not here.
Repro (real converter, HEAD ab8fc1a — EXECUTED)
Model:
region_name(T_SQL-only → dropped) + metricregion_count = COUNT(DISTINCT REGION_NAME)(DATABRICKS). Actual output:Warning emitted:
[field 'region_name'] no DATABRICKS/ANSI_SQL dialect; dropping field. The metric should have been cascade-dropped.Suggested fix
Add
re.IGNORECASEto both patterns in_references_dropped.