Skip to content

Commit b9e5c14

Browse files
authored
Properly propagate config for metric when created from measure (#12135)
* Propagate measure.config to metric.config when specified during create_metric:True * changelog * Update the metric.expr to be populated correctly according to DSI rules
1 parent 001e729 commit b9e5c14

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Under the Hood
2+
body: Fixes issue where config isn't propagated to metric from measure when set as create_metric:True
3+
time: 2025-11-03T00:53:11.354097-05:00
4+
custom:
5+
Author: WilliamDee
6+
Issue: None

core/dbt/parser/schema_yaml_readers.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -633,14 +633,21 @@ def _create_metric(
633633
measure: UnparsedMeasure,
634634
enabled: bool,
635635
semantic_model_name: str,
636+
meta: Optional[Dict[str, Any]] = None,
636637
) -> None:
638+
config: Dict[str, Any] = {"enabled": enabled}
639+
if meta is not None:
640+
# Need to propagate meta to metric from measure during create_metric: True
641+
config["meta"] = meta
637642
unparsed_metric = UnparsedMetric(
638643
name=measure.name,
639644
label=measure.label or measure.name,
640645
type="simple",
641-
type_params=UnparsedMetricTypeParams(measure=measure.name, expr=measure.name),
646+
type_params=UnparsedMetricTypeParams(
647+
measure=measure.name, expr=measure.expr or measure.name # type: ignore
648+
),
642649
description=measure.description or f"Metric created from measure {measure.name}",
643-
config={"enabled": enabled},
650+
config=config,
644651
)
645652

646653
parser = MetricParser(self.schema_parser, yaml=self.yaml)
@@ -758,7 +765,10 @@ def parse_semantic_model(self, unparsed: UnparsedSemanticModel) -> None:
758765
for measure in unparsed.measures:
759766
if measure.create_metric is True:
760767
self._create_metric(
761-
measure=measure, enabled=parsed.config.enabled, semantic_model_name=parsed.name
768+
measure=measure,
769+
enabled=parsed.config.enabled,
770+
semantic_model_name=parsed.name,
771+
meta=config.meta if config is not None else None,
762772
)
763773

764774
def parse(self) -> None:

0 commit comments

Comments
 (0)