github dbt-labs/metricflow v0.210.0
MetricFlow 0.210.0

6 hours ago

MetricFlow 0.210.0 - April 24, 2026

Breaking Changes

  • Remove MetricFlowEngine.get_measures_for_metrics (#1881)
  • License Change - Version 0.209.0 and greater is covered by the Apache 2.0 license. (#1905)

Features

  • Add new transformations to production from dsi that produce metrics from old-style measures. (#387)
  • Generate nested CTEs to simplify SQL (#1992)
  • Add initial implementation of OSI converters (#2017)

Fixes

  • Don't error for lack of time dimensions in manfest (#1848)
  • Pin to the latest non-dev release of dbt-semantic-interfaces. (#1854)
  • Use node_relation to render time spine table with proper quoting. (#1875)
  • Fixes a bug related to leaving out metric values in offset metrics, specifically if the queried grain is smaller than the offset grain. (#1910)
  • Properly apply time constraints on agg time dimensions for cumulative metrics. (#1910)
  • Fixes a bug causing errors for join_to_timespine metrics queried with date part. (#1919)
  • Add dunder prefix to column aliases for simple-metric inputs (#1938)
  • Render simple-metric inputs without a dunder prefix for the WHERE filter (#1941)
  • Improve handling of invalid metrics in metadata methods of MetricFlowEngine (#1949)
  • Fixes an issue where metric-level YAML filters are not applied for cumulative & conversion metrics. (#1950)
  • Fix logging setup in the CLI (#1932)
  • Fixes a bug where time dimensions utilizing the default time grain raise an error. (#1955)
  • Add memoization to resolve_available_items to prevent repeated expensive DAG traversals during query resolution with invalid group-by items (#1964)
  • Fix optimization of queries containing metrics withfill_nulls_with set (#1963)
  • Improve CTE generation via caching in ComputeMetricsBranchCombiner (#1986)
  • Prevent base-grain time dimensions from leaking into time-offset metric output (#2004)
  • Fix check for aggregation time dimensions in filters (#2012)
  • Fix bug with filters applied before aggregation in time-offset metrics (#2016)
  • Fix queries mixing aliased and non-aliased versions of the same dimension (#2025)

Docs

  • Update help text for mf query options (#1815)
  • Improve OSS contribution standards in CONTRIBUTING.md (#1996)

Under the Hood

  • Add tests for the filtering of AnnotatedSpecLinkableElementSet (#1864)
  • Remove LegacyLinkableSpecResolver (#1865)
  • Consolidate measure / metric methods of GroupByItemSetResolver (#1871)
  • Add test for group-by items using the cyclic manifest (#1869)
  • Add workflow to check changelog files (#1847)
  • Remove LinkableElementSet (#1866)
  • Rename classes for group-by items (#1870)
  • Consolidate measure-related operations into MeasureLookup (#1868)
  • Consolidate measure / metric methods of MetricLookup (#1872)
  • Assorted fixes for GroupByItemSetFilter (#1873)
  • Bump dependence on dbt-semantic-interfaces to 0.9.3.dev4 to get newest transformations code. (#387)
  • Add SemanticGraphNodeTypedCollection (#1880)
  • Update metricflow_semantics to migrate measures -> simple metrics (#1882)
  • Update metricflow to migrate measures -> simple metrics (#1889)
  • Add a test for MetricLookup. get_aggregation_time_dimension_specs() (#1890)
  • Update SQL engine snapshots for the measures -> simple metrics migration (#1891)
  • Remove measure-related functionality from MetricLookup (#1892)
  • Remove deprecated measure-related classes (#1893)
  • Update simple-metric generation in the synthetic manifest generator (#1894)
  • Copy dbt-semantic-interfaces into the MetricFlow repo. (#1895)
  • Mark tests from test_dataflow_to_sql_plan.py as DuckDB-Only (#1896)
  • Remove SimpleMetricInputSpec.non_additive_dimension_spec (#1897)
  • Renames for the measures -> simple metrics migration - Part 1 (#1898)
  • Renames for the measures -> simple metrics migration - Part 2 (#1902)
  • Renames for the measures -> simple metrics migration - Part 3 (#1903)
  • Rename Metricflow* -> MetricFlow* (#1904)
  • Remove assorted unused code (#1908)
  • Move helper / utility methods to toolkit module (#1909)
  • Update Cursor rules file to include linting + loading of additional rules (#1920)
  • Move semantic-graph modules out of experimental (#1921)
  • Remove case to reproduce date-part bug (#1922)
  • Consolidate alias SQL generation to ComputeMetricsNode (#1936)
  • Remove AggregateSimpleMetricInputsNode.alias_mapping (#1937)
  • Filter out unneeded specs in dataflow plan before applying where filter. (#1944)
  • Move CLI tests to dbt-metricflow package. Developers will need to run make test-include-slow to execute CLI tests locally, and will need to run hatch -v run dev-env:pre-commit clean to pick up the relevant config changes for linting. (#1948)
  • Multiprocess explain-SQL test framework (#1951)
  • Support explain-SQL tests using external manifests (#1952)
  • Add explain-SQL test using all metric / group-by item pairs (#1953)
  • Add a test for a query that includes a time-offset metric and metric_time__alien_day (#1954)
  • Test optimization of queries containing metrics withfill_nulls_with set (#1962)
  • Update ComputeMetricsNode to allow passthrough (#1972)
  • Rename FilterElementsNode to SelectorNode (#1973)
  • Assorted updates to DataflowPlanBuilder (#1976)
  • Remove WhereFilterSpecSet (#1977)
  • Replace PydanticMetricTimeWindow fields with immutable equivalent (#1978)
  • Rename WhereConstraintNode to WhereFilterNode for consistency (#1979)
  • Improve rendering of multiple WHERE filters (#1980)
  • Remove LinklessEntitySpec (#1981)
  • Assorted updates to ordered set and graph classes (#1982)
  • Add .create() initializer to spec / request classes (#1983)
  • Use a graph to model metric evaluation for a query (#1984)
  • Add DFS metric evaluation planner (#1985)
  • Update DataflowPlanBuilder to use DFS metric evaluation plan (#1989)
  • Update metric evaluation planner tests to include SQL (#1990)
  • Add passthrough metric evaluation planner (#1991)
  • Add DataflowPlanOptionSet to group build options (#1995)
  • Add PASSTHROUGH_METRIC_EVALUATION as an optimizer option (#1994)
  • Add tests for nested offset metric queries with custom time grains (#1988)
  • Fold metricflow-semantics into metricflow (#2000)
  • Sync dbt-semantic-intefaces to metricflow-semantic-interfaces in metricflow (#2001)
  • Begin depending on metricflow-semantic-interfaces instead of dbt-semantic-interfaces (#2002)
  • Remove unused code in dataflow_plan_builder.py (#2003)
  • Move directory anchor to toolkit module (#2006)
  • Add a helper to consolidate operations for time-offset metrics (#2008)
  • Add tests for bugs with filter application in time-offset metrics (#2007)
  • Added copilot instructions to improve AI code review support. (#2011)
  • Simplify metricflow dependencies (#2015)
  • Add a test case for time-offset metric with non-queried item in the filter (#2009)
  • Update ruff.toml and AGENTS.md for Python 3.10 (#2022)
  • Streamline alias node addition in DataflowPlanBuilder (#2023)
  • Move alias rendering tests to a separate file (#2024)
  • Allow order-by items to omit the alias (#2030)

Dependencies

  • Update requirement for dependency more-itertools to include newest version (#1879)
  • Update to dbt-semantic-interfaces==0.9.4.dev0 (#1889)
  • Bumping upperbound range for dbt-semantic-interfaces in metricflow-semantics
  • Add SqlAlchemy based SqlClient for test execution. This alters the developer environment to include SqlAlchemy dependencies. (#1966)
  • Remove dbt dependencies from Metricflow development packages. This will require an environment refresh across metricflow and dbt-metricflow. (#1967)
  • Expand dbt-core support to <1.12
  • Update supported Python versions to >=3.10, <3.14 (#2020)

Contributors

Don't miss a new metricflow release

NewReleases is sending notifications on new releases.