From 9cbd7dd229f34aae34344f8b20524a5d3afba2b1 Mon Sep 17 00:00:00 2001 From: Courtney Holcomb Date: Mon, 16 Oct 2023 18:06:27 -0700 Subject: [PATCH 1/2] Remove error for date part with non-metric time dimension (#813) --- metricflow/query/query_parser.py | 11 ++++++++++- .../test/integration/test_cases/itest_metrics.yaml | 13 +++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/metricflow/query/query_parser.py b/metricflow/query/query_parser.py index 202115267f..8141fadcd7 100644 --- a/metricflow/query/query_parser.py +++ b/metricflow/query/query_parser.py @@ -810,8 +810,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 From 8e1acee1444eed61ed6fa059265fa3146e37d497 Mon Sep 17 00:00:00 2001 From: Courtney Holcomb Date: Mon, 16 Oct 2023 21:06:49 -0700 Subject: [PATCH 2/2] Cherry-picked dev release number 2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ccf0337542..f8201749d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "metricflow" -version = "0.203.0.dev4" +version = "0.203.0.dev7" description = "Translates a simple metric definition into reusable SQL and executes it against the SQL engine of your choice." readme = "README.md" requires-python = ">=3.8,<3.12"