Skip to content

Releases: dbt-labs/metricflow

MetricFlow 0.212.0

Choose a tag to compare

@plypaul plypaul released this 19 Aug 20:47
e4b9b7b

MetricFlow 0.212.0 - August 11, 2026

Features

  • Add Athena adapter and SQL rendering support (#979)

Fixes

  • Use TIMESTAMP_TRUNC instead of DATETIME_TRUNC for BigQuery (#2078)
  • Add parentheses around user-supplied filter strings (#2066)
  • Name auto-generated OSI ratio sub-metrics without dunders so they pass semantic manifest name validation (#2091)

Under the Hood

  • Restore dbt-metricflow dependency changes in release flow (#2055)
  • Remove old release helpers (#2056)
  • Simplify output column orderers (#2064)
  • Add option to use legacy column order (#2065)
  • Limit result cache in group-by item resolver (#2075)
  • Update error handling for invalid percentile configuration (#2076)
  • Update emitted messages in ExecutionTimer (#2084)
  • Clean up method duration logging (#2085)
  • Improve invalid state file handling in the release tool (#2088)
  • Update release tool to use ort instead of fossa (#2102)
  • Add CI pipeline to compile MetricFlow into standalone Nuitka binaries for macOS, Linux, and Windows, and publish them as versioned GitHub Release artifacts for embedding in dbt-core v2 (Fusion) (#2106)

Dependencies

  • Update DuckDB dev dependency to >= 1.5 (#2051)
  • Update dbt-core to >=1.11, <1.13 (#2105)
  • Support Python 3.14 in dbt-metricflow (#2108)

Contributors

mf-stdio-sidecar/v0.212.0.dev0+2607311617.cb03eb2a

Choose a tag to compare

@github-actions github-actions released this 31 Jul 17:07
cb03eb2
DI-4871: decouple sidecar release versioning from MetricFlow release …

sidecar/v0.210.0+1

Choose a tag to compare

@github-actions github-actions released this 27 Jul 21:30
51a83fe
DI-4819: swap x86_64-apple-darwin leg to MACOS_RUNNER_INTEL (#2103)

## Summary

Follow-up to #2079. The `macos-13` leg of
`cd-build-sidecar-binaries.yaml` was disabled there (GitHub's free-tier
hosted Intel Mac pool queues indefinitely). This swaps it to
`vars.MACOS_RUNNER_INTEL` (`macos-15-intel`).

## Why this variable, not Depot

Depot (dbt-core v2's route for aarch64-apple-darwin) doesn't work here:
Depot's own docs confirm its macOS runners are Apple Silicon (M2/M4)
only, and Nuitka can't cross-compile the way dbt-core's Rust CLI builds
do. This is because the Nuitka builds embeds native CPython plus
precompiled per-arch wheels (pydantic-core, duckdb), so it needs to
actually run on Intel hardware to produce an Intel binary. However there
is still a path forward. Some of the drivers core v2 uses for adapters
are go based, and go also don't have cross compilation. For these builds
it turns out we target macos-15-intel, which is now what we do.

## Validated

`MACOS_RUNNER_INTEL` has been added as a variable on this repo.
Confirmed in two stages:

- A one-step, no-compile check scheduled and ran in 5s on genuine
`x86_64` hardware (`Darwin ... RELEASE_X86_64 x86_64`, macOS 15.7.7) --
no queueing, unlike `macos-13`.
- The full matrix then ran end-to-end via a temporary draft-PR
validation trigger (since removed): all 5 legs passed, including
`Compile & Validate mf_entry (x86_64-apple-darwin)` in 23m6s on
`macos-15-intel`.

## Caveat

GitHub has announced it's retiring Intel macOS support entirely after
the macOS 15 runner image goes away (~Fall 2027) -- this is a real fix
but not a permanent one.

Refs DI-4819

MetricFlow 0.211.0

Choose a tag to compare

@plypaul plypaul released this 12 May 20:34
cc1f087

MetricFlow 0.211.0 - May 11, 2026

Features

  • Return results from OSI<>MSI converters as a ConverterResult object (#2031)
  • Add support for Python 3.14 for metricflow package (#1916)
  • Allow multiple --where arguments in the CLI (#2050)

Fixes

  • Isolate mypy cache between metricflow / dbt-metricflow (#2046)

Under the Hood

  • Run lint / tests for dbt-metricflow in a separate environment (#2039)
  • Port dbt-metricflow package CI tests (#1933)
  • Update dbt-metricflow package tests to check log file (#1934)
  • Initial step for release automation tool (#2040)
  • Add other steps for release automation tool (#2042)
  • Assorted refinements to the release tool (#2045)
  • Add retries to test_format_report_to_text_table (#2047)

Dependencies

  • Remove graphviz dependency from dbt-metricflow (#2038)
  • Update DuckDB dev dependency to >= 1.5 (#2051)

Contributors

MetricFlow 0.210.0

Choose a tag to compare

@plypaul plypaul released this 28 Apr 17:12
b1708db

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 `DataflowPlanBuild...
Read more

MetricFlow v0.209.0

Choose a tag to compare

@courtneyholcomb courtneyholcomb released this 14 Oct 16:06
v0.209.0
ce79457

Releases MetricFlow with an Apache 2.0 license.

Note that dbt-semantic-interfaces is currently pinned to a development version, which may cause issues for some installers. This will be resolved soon.

What's Changed

New Contributors

Full Changelog: v0.208.1...v0.209.0

v0.208.1

Choose a tag to compare

@courtneyholcomb courtneyholcomb released this 18 Sep 22:20
v0.208.1
9e6908b

What's Changed

Full Changelog: v0.208.0...v0.208.1

MetricFlow 0.208.0

Choose a tag to compare

@plypaul plypaul released this 11 Sep 22:24
9ebb912

MetricFlow 0.208.0 - September 11, 2025

Features

  • Support for custom offset windows. (#1584)
  • Support for multiple time spines in one query. (#1644)
  • Allow bypassing the group by when making queries without metrics. (#1720)
  • Support aliases for dimensions and entities. (#1727)
  • Support for order_by and limit on saved queries (#1759)
  • Expose semantic_model(s) on Metrics and Dimensions in API (#1776)
  • Support ordering dimensions by semantic model name" (#1778)
  • Add new CLI command 'mf list saved-queries' to list all saved queries with their descriptions (#1787)
  • Improve engine initialization speed via semantic graph (#1835)

Fixes

  • Add config to get_measures_for_metrics response (#1606)
  • 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)
  • Remove semantic_manifest.json from the tutorial project (#1704)
  • Remove trailing comma when pretty-formatting list (#1735)
  • Fix error message with empty queries (#1740)
  • Fix exception propagation in SQL generation (#1747)
  • Fix ambiguity error for time dimensions in Dimension Jinja block (#1772)
  • Ensure agg_time_dimension is lowercased (#1773)
  • Fix error message in no_common_items.py (#1795)
  • Fix ambiguous-join-path detection for UNIQUE entities (#1835)

Under the Hood

  • Add properties to LazyFormat for custom logging handlers (#1713)
  • Synthetic manifests for performance tests (#1495)
  • Add support for index object to improve MF engine initialization times. (#1715)
  • Use option object for mf_pformat (#1731)
  • Provide context in MetricFlowPrettyFormattable.pretty_format() (#1733)
  • Use {} for pretty-formatting Set (#1734)
  • Add include_underscore_prefix_fields option to mf_pformat (#1736)
  • Add pretty_format_object_by_parts() to pretty formatter (#1738)
  • Add test to check the error message for empty queries (#1739)
  • Update SequentialIdGenerator to support async methods (#1741)
  • Generate a SELECT statement for sink nodes in a dataflow plan (#1743)
  • Update SelectColumnSet fields to tuples (#1744)
  • Add MetricQuerySpec.spec_output_order (#1745)
  • Update engine interface to order output columns by query inputs (#1746)
  • Use output from the click invocation to check test results (#1749)
  • Handle order_output_columns_by_input_order for filtered metrics (#1753)
  • Rename mf_test_configuration -> snapshot_configuration (#1750)
  • Consolidate dev dependencies of metricflow-semantics and metricflow (#1751)
  • Add handling of Path objects in mf_pformat() (#1752)
  • Implement Sized for WhereFilterSpecSet (#1756)
  • Skip rendering of the table alias in SQL if not needed (#1757)
  • Replace Singleton with @singleton_dataclass() (#1761)
  • Assorted improvements to snapshot methods (#1762)
  • Implement Mergeable for PrettyFormatOption (#1763)
  • Add base classes to model a directed graph (#1764)
  • Add formatter to display graphs in DOT notation. (#1766)
  • Add formatter to display graphs in DOT notation (#1766)
  • Assorted fixes for graph-related classes (#1782)
  • Remove predicate pushdown optimizer for now (#1783)
  • Update the snapshot format for LinkableElementSet (#1784)
  • Add interfaces for LinkableElementSet / LinkableSpecResolver (#1785)
  • Add fast lookup for semantic-manifest objects (#1789)
  • Add a helper for writing timeit-based performance tests (#1788)
  • Cache predecessors / successors in graphs (#1790)
  • Add semantic-graph node classes (#1791)
  • Migrate back to Singleton for simplicity / performance (#1793)
  • Add semantic-graph edge classes (#1794)
  • Add subgraph generator for measures (#1796)
  • Add subgraph generator for modeling joins (#1798)
  • Add subgraph generator for categorical dimensions (#1799)
  • Add subgraph generator for configured-entity keys (#1800)
  • Add subgraph generator for metrics (#1802)
  • Add subgraph generator for time-related elements (#1801)
  • Add graph path / pathfinder classes (#1803)
  • Add path weight-function for the semantic graph (#1804)
  • Add trie-like data structure for dunder names (#1805)
  • Add semantic-graph-based resolver for simple group-by items (#1806)
  • Add semantic-graph-based resolver for group-by metrics (#1807)
  • Add an implementation of LinkableSpecResolver using the semantic-graph (#1808)
  • Add performance tests for the semantic-graph-based resolver (#1809)
  • Add use_semantic_graph flag to SemanticManifestLookup (#1812)
  • Add query-parser tester and additional cases for SCDs (#1814)
  • Update error handling for simple_dimensions_for_metrics (#1816)
  • Minor fixes for semantic manifests in test cases (#1818)
  • Add text-table formatter for SessionReport (#1819)
  • Assorted minor fixes / improvements (#1820)
  • Switch back to using minimum time grain from models (#1822)
  • Migrate correctness tests for the semantic-graph-based resolver (#1833)
  • Migrate performance tests for the semantic-graph-based resolver (#1834)

Dependencies

  • Remove version requirement for dbt adapters in dbt-metricflow (#1837)

Contributors

Read more

MetricFlow 0.207.3

Choose a tag to compare

@plypaul plypaul released this 01 Apr 21:44
5ec0159

Features

  • Allow querying SCDs without metric_time. (#1621)
  • Add --quiet option to the query CLI command. (#1554)
  • Specify DB file path in tutorial-project profile (#1692)
  • Add support for DBT_PROFILES_DIR / DBT_PROJECT_DIR in the CLI (#1702)
  • Add semantic manifest artifact context to error messages (#1708)

Fixes

  • Update tutorial project to use ref() (#1691)
  • Address issues with the display of numeric types (#1699)
  • Address display of None in the output of mf query (#1700)
  • Address display of whitespace-padded strings in the output of mf query (#1701)
  • Address intermittently missing CSV output file (#1709)
  • Configure pytest to skip scanning snapshots directory (#1710)
  • Fix issue counter when generating error messages. (#1708)

Under the Hood

  • Use snapshots in CLI tests. (#1690)
  • Allow CliConfiguration to be loaded from specified paths (#1693)
  • Remove dbt project metadata dependency in tutorial project generation (#1694)
  • Avoid reinitialization of CLIConfiguration (#1697)
  • Add process-isolated CLI runner for tests (#1695)
  • Migrate CLI tests to use the process-isolated CLI runner (#1696)

Contributors

MetricFlow 0.207.2

Choose a tag to compare

@plypaul plypaul released this 23 Feb 20:36
a2b4211

Changes from 0.207.2:

This release includes a number of a number of assorted fixes and updates that were backported from main. It includes some updates to enable CTEs by default.

MetricFlow 0.207.2 - February 21, 2025

Features

  • Allow setting aliases for queried metrics (#1573)

Fixes

  • Always treat metric_time and the agg_time_dimension the same in the JoinToTimeSpineNode. (#1541)
  • Apply time constraints after time offsets to avoid filtering out values that will change later in the query. (#1544)
  • Update mf tutorial flow to always create / use the sample dbt project. (#1651)

Contributors