Skip to content

Commit 2c6ae4d

Browse files
Add new-syle YAML (Parsed) Metric
1 parent 8930660 commit 2c6ae4d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

core/dbt/parser/schema_yaml_readers.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
UnparsedMetricInput,
5050
UnparsedMetricInputMeasure,
5151
UnparsedMetricTypeParams,
52+
UnparsedMetricV2,
5253
UnparsedNonAdditiveDimension,
5354
UnparsedQueryParams,
5455
UnparsedSavedQuery,
@@ -72,7 +73,7 @@
7273

7374

7475
def parse_where_filter(
75-
where: Optional[Union[List[str], str]]
76+
where: Optional[Union[List[str], str]],
7677
) -> Optional[WhereFilterIntersection]:
7778
if where is None:
7879
return None
@@ -470,12 +471,20 @@ def _generate_metric_config(
470471

471472
def parse(self) -> None:
472473
for data in self.get_key_dicts():
473-
try:
474-
UnparsedMetric.validate(data)
475-
unparsed = UnparsedMetric.from_dict(data)
476-
477-
except (ValidationError, JSONValidationError) as exc:
478-
raise YamlParseDictError(self.yaml.path, self.key, data, exc)
474+
# The main differentiator of old-style yaml and new-style is "type_params",
475+
# so if that is missing, we'll assume you're using the newer yaml.
476+
if "type_params" in data:
477+
try:
478+
UnparsedMetric.validate(data)
479+
unparsed = UnparsedMetric.from_dict(data)
480+
except (ValidationError, JSONValidationError) as exc:
481+
raise YamlParseDictError(self.yaml.path, self.key, data, exc)
482+
else:
483+
try:
484+
UnparsedMetricV2.validate(data)
485+
unparsed = UnparsedMetricV2.from_dict(data)
486+
except (ValidationError, JSONValidationError) as exc:
487+
raise YamlParseDictError(self.yaml.path, self.key, data, exc)
479488
self.parse_metric(unparsed)
480489

481490

0 commit comments

Comments
 (0)