diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index 95607e63ea..fab4a80734 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -811,8 +811,17 @@ def _get_invalid_linkable_specs( invalid_linkable_specs.append(entity_spec) for time_dimension_spec in time_dimension_specs: + time_dimension_spec_without_date_part = time_dimension_spec + if time_dimension_spec.date_part: + # TODO: remove this workaround & add date_part specs to validation paths. + time_dimension_spec_without_date_part = TimeDimensionSpec( + element_name=time_dimension_spec.element_name, + entity_links=time_dimension_spec.entity_links, + time_granularity=time_dimension_spec.time_granularity, + aggregation_state=time_dimension_spec.aggregation_state, + ) if ( - time_dimension_spec not in valid_linkable_specs + time_dimension_spec_without_date_part not in valid_linkable_specs # Because the metric time dimension is a virtual dimension that's not in the model, it won't be included # in valid_linkable_specs. and time_dimension_spec.reference != DataSet.metric_time_dimension_reference() diff --git a/metricflow/test/integration/test_cases/itest_metrics.yaml b/metricflow/test/integration/test_cases/itest_metrics.yaml index d88ed9d83c..6e1205f1c4 100644 --- a/metricflow/test/integration/test_cases/itest_metrics.yaml +++ b/metricflow/test/integration/test_cases/itest_metrics.yaml @@ -1057,6 +1057,19 @@ integration_test: FROM {{ source_schema }}.fct_bookings GROUP BY {{ render_extract("ds", DatePart.YEAR) }}; --- +integration_test: + name: simple_query_with_date_part_not_metric_time + description: Test query using date_part + model: SIMPLE_MODEL + metrics: ["bookings"] + group_by_objs: [{"name": "booking__ds", "date_part": "year"}] + check_query: | + SELECT + SUM(1) AS bookings + , {{ render_extract("ds", DatePart.YEAR) }} AS booking__ds__extract_year + FROM {{ source_schema }}.fct_bookings + GROUP BY {{ render_extract("ds", DatePart.YEAR) }}; +--- integration_test: name: simple_query_with_multiple_date_parts description: Test query using multiple date_parts