Introducing MetricFlow, Transform’s open source metric framework.
Build and maintain all of your metric logic in code. Get consistent metrics across every team and every tool.
Your open source metrics layer
Powerful semantic models for your metrics
MetricFlow constructs a relational graph of your underlying data model—so you can easily build and aggregate even your most complex metrics to any granularity. Powerful abstractions mean you spend less time configuring data and more time on strategic work.


Pull metrics into downstream applications
With MetricFlow’s API-layer, called MQL (MetricFlow Query Language), connect with a range of downstream tools and express metric requests through various interfaces. MQL eliminates the need for writing (or copy-pasting) SQL into last-mile data analysis tools.
Create a consistent data model across your stack
Stop redefining metric logic in every query. Use MetricFlow to generate data marts (also called denormalized or summary tables) back to your warehouse for your most-popular metrics and dimensions. This keeps your data models consistent and eliminates repetitive work.
SELECT
m.meetings_per_sales_person
, sales_28.gross_sales_last28
, COALESCE(m.ds, sales_28.ds) AS ds
FROM (
SELECT
CAST(meetings AS DOUBLE) / NULLIF(sales_persons_with_a_meeting, 0) AS meetings_per_sales_person
, ds
FROM (
SELECT
SUM(1) AS meetings
, COUNT(DISTINCT m.sales_person_id) AS sales_persons_with_a_meeting
, m.ds
FROM DEMO_DB.MEETINGS AS m
JOIN DEMO_DB.PRODUCTS AS p
ON p.product_id = m.product_id
AND p.ds = m.ds
WHERE p.category = 'API'
GROUP BY m.ds
)
) AS m
FULL OUTER JOIN (
SELECT
SUM(s.gross_sales) AS gross_sales_last28
, d.ds
FROM (
SELECT
SUM(t.sales_price) AS gross_sales
, t.ds
FROM DEMO_DB.TRANSACTIONS AS t
JOIN DEMO_DB.PRODUCTS AS p
ON p.product_id = t.product_id
AND p.ds = t.ds
WHERE p.category = 'API'
GROUP BY
t.ds
) s
INNER JOIN (
SELECT DISTINCT(ds) as ds
FROM DEMO_DB.TRANSACTIONS
) AS d
ON s.ds <= d.ds
AND s.ds > DATEADD(day, -28, d.ds)
GROUP BY
d.ds
) AS sales_28
ON
sales_28.ds = COALESCE(m.ds,NULL)
mql query --metrics 'meetings_per_sales_person,
gross_sales_last28' --dimensions 'ds' --where "product__category = 'API'"
Avoid code duplication and simplify queries
Simplify code governance with auto-generated SQL for even for the most complex queries. Optimized for the “DRY (Don’t Repeat Yourself)” principle, MQL (MetricFlow Query Language) helps you avoid code duplication in key workflows that can lead to technical debt and disjointed metric logic.
Bring your own compute
Define new database connectors and optimizations for your unique use cases. MetricFlow supports—and even optimizes—queries to any data warehouse. MetricFlow also has database-specific optimizations for Snowflake, Amazon Redshift, and Google BigQuery.

We started Transform to democratize access to insights. And we believe every modern data team needs a metrics layer to make that vision a reality. We’re sharing our framework with the community so that teams everywhere can experience the transformative power of trustworthy metrics.