Changes from 0.206.0
:
Note: this release is compatible with / requires dbt-core >= 1.9.0, < 1.10.0
and is cut from 5bb13511d36c6122527a1bd12de9d6e0707a9ddc
. The prior version 0.207.0
on Pypi depended on a version of dbt-semantic-interfaces
that was later than the versions supported in the latest official release of dbt-core
(1.9.1
as of this note).
Breaking Changes
- Changes MetricFlowQueryRequest.where_constraint to where_constraints and now accepts a list (#1431)
- Require Python
>=3.9
(#1470) - Require
dbt-core >= 1.9.0, < 1.10.0
(#1615 )
Features
- Enable predicate pushdown for categorical dimensions (#1011)
- Support sub-daily granularity options in SQL rendering for all supported SQL engines. (#1258)
- Adds a new dataflow plan node to re-aggregate metrics using window functions. Needed to calculate cumulative metrics at non-default granularities. (#1274)
- Build dataflow plan for cumulative metrics queried with non-default granularity. (#1281)
- Remove restriction on querying non-default granularities with cumulative metrics. (#1282)
- Enable predicate pushdown optimization by default for all callers (#1011)
- Use Metric.time_granularity to resolve metric_time. (#1310)
- Support multiple time spines with different granularities. (#1348)
- Enable sub-daily queries without metrics. (#1359)
- Enable sub-daily time constraints. (#1367)
- Support combining AggregateMeasuresNodes where metric input measures have aliases, so long as there are no duplicates. (#1375)
- Handle custom granularities in DataflowPlan. (#1382)
- Support custom granularities in query parsing. (#1413)
- Support conversion metrics queried with custom granularities. (#1475)
- Basic support for join_to_timespine metrics with custom grain in the group by. (#1505)
- Use CTEs instead of sub-queries in generated SQL. (#1040)
Fixes
- When querying multiple agg time or metric time dimensions with a cumulative metric, select all of them from the time spine table. (#1271)
- Remove extraneous where filter subqueries added by predicate pushdown (#1011)
- Add Column header to the exported CSV from query command
- Allow metrics with matching input measures where one is cumulative and one is not. (#1374)
- Fixes bug where conversion metric query fails when filter with base semantic model's dimension is provided (#1210)
- Bug fix: ensure that granularity requested for non-additive dimension is respected. (#1383)
- Bug fix: when querying a join_to_timespine metric with a metric_time filter that is not included in the group by, unexpected output rows were included. (#1450)
- Remove unnecessary group bys that make queries less efficient. (#1453)
- Add new validation that checks for SCDs in the join path to make grouping by
metric_time
required in this case. (#1451) - Make ID generation thread-safe (#1473)
- Prevent SourceScanOptimizer from combining nodes that use the same input metric alias in different derived metrics (#1494)
- Fix
mf tutorial
experience. (#1631) - Compatibility Issue with dbt-core 1.9.0 and dbt-metricflow 0.7.1. (#1589)
- dbt-core dependency issue with metricflow==0.207.0. (#1632)
Under the Hood
- Add test coverage for more filter + join interactions (#1240)
- Add dataflow plan optimizer to replace build-time predicate pushdown (#1011)
- Added filtering for DWH validation tasks and saved query support (#1271)
- Refine subquery ID generation. This may result in changing subquery ids for rendered SQL. (#1280)
- Move categorical dimension predicate pushdown to DataflowPlanOptimizer (#1011)
- Consume cumulative-specific metric type params from new cumulative_type_params field. (#1293)
Dependencies
- Allow pydantic 2.x installations (#1299)
Contributors
- @WilliamDee (#1210, #1271)
- @WilliamDee,courtneyholcomb (#1431)
- @courtneyholcomb (#1258, #1274, #1281, #1282, #1310, #1348, #1359, #1367, #1375, #1382, #1413, #1475, #1505, #1271, #1374, #1383, #1450, #1453, #1293)
- @plypaul (#1470, #1040, #1473, #1631, #1589, #1632)
- @saurabh0402
- @serramatutu (#1451, #1494)
- @tlento (#1011, #1011, #1011, #1240, #1011, #1280, #1011, #1299)