diff --git a/.changes/unreleased/Under the Hood-20251103-005311.yaml b/.changes/unreleased/Under the Hood-20251103-005311.yaml new file mode 100644 index 00000000000..2054fa62f3a --- /dev/null +++ b/.changes/unreleased/Under the Hood-20251103-005311.yaml @@ -0,0 +1,6 @@ +kind: Under the Hood +body: Fixes issue where config isn't propagated to metric from measure when set as create_metric:True +time: 2025-11-03T00:53:11.354097-05:00 +custom: + Author: WilliamDee + Issue: None diff --git a/core/dbt/parser/schema_yaml_readers.py b/core/dbt/parser/schema_yaml_readers.py index ef82728a4ff..46db62ede17 100644 --- a/core/dbt/parser/schema_yaml_readers.py +++ b/core/dbt/parser/schema_yaml_readers.py @@ -633,14 +633,21 @@ def _create_metric( measure: UnparsedMeasure, enabled: bool, semantic_model_name: str, + meta: Optional[Dict[str, Any]] = None, ) -> None: + config: Dict[str, Any] = {"enabled": enabled} + if meta is not None: + # Need to propagate meta to metric from measure during create_metric: True + config["meta"] = meta unparsed_metric = UnparsedMetric( name=measure.name, label=measure.label or measure.name, type="simple", - type_params=UnparsedMetricTypeParams(measure=measure.name, expr=measure.name), + type_params=UnparsedMetricTypeParams( + measure=measure.name, expr=measure.expr or measure.name # type: ignore + ), description=measure.description or f"Metric created from measure {measure.name}", - config={"enabled": enabled}, + config=config, ) parser = MetricParser(self.schema_parser, yaml=self.yaml) @@ -758,7 +765,10 @@ def parse_semantic_model(self, unparsed: UnparsedSemanticModel) -> None: for measure in unparsed.measures: if measure.create_metric is True: self._create_metric( - measure=measure, enabled=parsed.config.enabled, semantic_model_name=parsed.name + measure=measure, + enabled=parsed.config.enabled, + semantic_model_name=parsed.name, + meta=config.meta if config is not None else None, ) def parse(self) -> None: