Skip to content

Commit 40da0d8

Browse files
Map metric YAML hidden field to is_private and add test
1 parent 1411f9f commit 40da0d8

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

core/dbt/parser/schema_yaml_readers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ def _get_metric_type_params(
508508
),
509509
metric_aggregation_params=metric_aggregation_params,
510510
join_to_timespine=unparsed_metric.join_to_timespine or False,
511+
is_private=unparsed_metric.hidden,
511512
)
512513
else:
513514
raise DbtInternalError(

tests/functional/semantic_models/fixtures.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,24 @@
846846
conversion_metric: simple_metric_2
847847
"""
848848

849+
schema_yml_v2_metrics_with_hidden = """
850+
metrics:
851+
- name: public_metric
852+
description: A metric that is not hidden.
853+
label: Public Metric
854+
type: simple
855+
agg: count
856+
expr: id
857+
hidden: false
858+
- name: private_metric
859+
description: A metric that is hidden.
860+
label: Private Metric
861+
type: simple
862+
agg: count
863+
expr: id
864+
hidden: true
865+
"""
866+
849867
schema_yml_v2_metric_with_doc_jinja = """
850868
- name: simple_metric_with_doc_jinja
851869
description: "{{ doc('simple_metric_description') }}"

tests/functional/semantic_models/test_semantic_model_v2_parsing.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
schema_yml_v2_cumulative_metric_missing_input_metric,
2121
schema_yml_v2_metric_with_doc_jinja,
2222
schema_yml_v2_metric_with_filter_dimension_jinja,
23+
schema_yml_v2_metrics_with_hidden,
2324
schema_yml_v2_simple_metric_on_model_1,
2425
schema_yml_v2_standalone_metrics,
2526
schema_yml_v2_standalone_metrics_with_doc_jinja,
@@ -465,6 +466,32 @@ def test_metric_on_model_parsing(self, project):
465466
assert conversion_metric_pydantic.type_params.metric_aggregation_params is None
466467

467468

469+
class TestMetricHiddenMapsToIsPrivate:
470+
"""Test that a metric's 'hidden' field in YAML is reflected as 'is_private' on the parsed metric."""
471+
472+
@pytest.fixture(scope="class")
473+
def models(self):
474+
return {
475+
"schema.yml": base_schema_yml_v2 + schema_yml_v2_metrics_with_hidden,
476+
"fct_revenue.sql": fct_revenue_sql,
477+
"metricflow_time_spine.sql": metricflow_time_spine_sql,
478+
}
479+
480+
def test_metric_hidden_yaml_maps_to_is_private(self, project):
481+
runner = dbtTestRunner()
482+
result = runner.invoke(["parse"])
483+
assert result.success
484+
manifest = result.result
485+
metrics = manifest.metrics
486+
assert len(metrics) == 2
487+
488+
public_metric = metrics["metric.test.public_metric"]
489+
assert public_metric.type_params.is_private is False
490+
491+
private_metric = metrics["metric.test.private_metric"]
492+
assert private_metric.type_params.is_private is True
493+
494+
468495
class TestStandaloneMetricParsingSimpleMetricFails:
469496
@pytest.fixture(scope="class")
470497
def models(self):

0 commit comments

Comments
 (0)