Back to Blog
Product

Warehouse Metrics: Your dbt Metrics Next to Your Product Data

Launch Week, day 2. Define metrics and KPIs in your data warehouse, then chart them in Mitzu on any insight or dashboard, next to the behaviour that moves them.

Chart the dbt metrics your data team already models, such as MRR and revenue booked, in Mitzu next to your product data. Roll-up rules and setup, step by step.

István Mészáros
István Mészáros

Co-founder & CEO

November 3, 2026
10 min read
Warehouse Metrics: Your dbt Metrics Next to Your Product Data

TL;DR

Warehouse Metrics (formerly Metric Tables) turns a table or view your data team already maintains, often a dbt model, into metrics you can chart in Mitzu, with no remodelling and no copy of your data outside the warehouse. Roll-up rules make longer periods correct: add up for revenue, use the latest value for MRR, or pick average, median, percentiles, lowest, highest, or don't roll up for rates. Warehouse metrics break down by your entities' properties, combine with event metrics in formulas such as revenue per active user, and work on dashboards and in the Analytics Agent.

Warehouse Metrics is new in Mitzu: define your own metrics and KPIs in your data warehouse, then visualize them in Mitzu on any chart or dashboard. It is built for the data analysts and analytics engineers who own the warehouse and the dbt models, and for the product, growth and leadership teams who want those numbers next to the user behaviour that moves them.

Some numbers are not built from events. MRR, revenue booked, active subscriptions and support ticket counts usually live in tables your data team already maintains in Snowflake, BigQuery, Databricks, Redshift, ClickHouse or a similar warehouse. Warehouse Metrics, formerly called Metric Tables, brings those numbers into Mitzu without remodelling them. It is the second release of Mitzu Launch Week.

Warehouse Metrics in Mitzu: add a metric table, give its columns roles, and chart MRR by plan next to your event data.

The case for Warehouse Metrics

Product analytics runs on events: signups, page views, feature usage, checkouts. The questions product teams ask, though, keep reaching for numbers that never were events.

  • The business numbers live in modelled tables. MRR is calculated from subscriptions, discounts, upgrades and cancellations, usually in a dbt model that took real work to get right. It is not something you can count from one event.
  • Rebuilding them from events creates a second version. When a product analytics tool recalculates revenue from its own events, its number drifts from the finance team's. Nobody trusts either, and every review starts with reconciling them.
  • The interesting questions need both sides. Revenue per active user, MRR by the industry of the company, support tickets per weekly active account: each one combines a business number with behaviour.
  • The definition belongs in one place. Your data team already versions, tests and reviews its models. The metric should be read from there, not redefined in a dashboard tool.

Warehouse Metrics reads the modelled table as it is. Mitzu stays an agentic product analytics platform, not a BI tool: the point is to put the business numbers your warehouse already holds next to the behavioural analysis Mitzu does, on the same charts, dashboards and agent. It follows from the same warehouse-native idea as the rest of the product: native joins to data you already have, and no copy of your data outside the warehouse.

Diagram: a dbt model finance.daily_mrr with columns date (time), plan_type (dimension), company_id (identifier), and mrr and revenue_booked (metric values) becomes the warehouse metrics MRR and Revenue booked, used in segmentation charts, formulas with events, dashboards and the Analytics Agent; the modelling stays in the warehouse
Give each column of a table you already maintain a role, and its value columns become warehouse metrics.

Benefits at a glance

BenefitWhat it means in practice
One definition of revenueMitzu reads the number your data team already calculates. The chart in Mitzu and the finance report come from the same model.
No remodellingPoint Mitzu at an existing table or view, such as a dbt model. Mitzu reads the column list from its definition; there is nothing to rewrite.
Correct roll-upsEach metric has a roll-up rule, so weekly or monthly views of MRR, balances or backlogs mean what they should.
Break downs by your entitiesAn identifier column joins the entity's dimension tables, so MRR breaks down by industry, plan or region like any event metric.
Next to behaviourUse a warehouse metric in a formula with an event metric, for example revenue booked per user who logged in.
Available to the agentAsk the Analytics Agent "What was our MRR by plan in September?" and it builds the insight on the warehouse metric.

Rows, columns and roles: how it works

A metric table is a table or view in your warehouse where each row covers one period, for example one day, and optionally one plan, company or region. Mitzu turns every value column into a metric. The one join Mitzu adds is to your dimension tables, when a column identifies an entity. Each column gets one role:

RoleUse it forExample
TimeThe date or timestamp of the row. At most one column, and it must be a date or timestamp. Without one, each metric is a single number, such as current ARR.date
Metric valueA number you want to chart. Give it a metric name and a roll-up rule.mrr
DimensionA column to break down and filter by. It can be linked to a matching event or entity property, so one insight filter applies to both.plan_type
Identifier · EntityA column that holds an entity's ID. The entity's dimension tables are joined on it.company_id
IgnoreColumns Mitzu doesn't use._loaded_at

Roll-up rules: what a longer period shows

A daily table viewed by week or month needs a rule for turning many rows into one number, and the right rule depends on the metric. Summing daily revenue gives weekly revenue. Summing daily MRR gives a number that means nothing.

Bar chart of one week of daily MRR: 100k, 101k, 103k, 104k, 106k, 107k and 110k. Rolled up to the week, Add up gives 731k, which is meaningless for MRR; Use the latest value gives 110k, the MRR at the end of the week; Average gives 104.4k; Use the earliest value gives 100k
The same seven rows of daily MRR give four different weekly numbers. Pick the rule that matches the metric.
RuleUse it forA week of daily rows shows
Add upRevenue, signups, ordersthe sum of its days
Use the latest valueMRR, active subscriptions, balancesits last day
Use the earliest valueOpening balances, MRR at the start of a monthits first day
AverageAverage daily MRR, average queue lengththe average of its days
Median, 75th and 90th percentileA typical day, a busy day, the slow days, without outliers pulling the number aroundthe median or percentile of its days
Lowest and highest valueLowest daily balance, peak concurrent usersits lowest or highest day
Don't roll upUnique counts, ratesnothing: the metric is shown only at the grain one row has

Rates deserve a note. Averaging daily conversion rates ignores how many users each day had. Pick Don't roll up, or add the two parts (orders and visitors) as separate metrics and divide them with a formula. Median and percentiles interpolate between rows the same way on every warehouse, like PERCENTILE_CONT in SQL.

Step by step: from a dbt model to a chart

Step 1: Have a table or view with one row per period

Most teams already have one. If not, a small dbt model on top of an existing subscription fact table is enough. The time column must be a date or timestamp; a Unix timestamp stored as a number needs converting in the model first.

-- models/finance/daily_mrr.sql
select
    date_day                        as date,
    plan_type,
    company_id,
    sum(mrr)                        as mrr,
    sum(revenue_booked)             as revenue_booked,
    count(distinct subscription_id) as active_subscriptions
from {{ ref('fct_subscription_days') }}
group by 1, 2, 3

Step 2: Add the metric table

In workspace settings, open Metric tables and click Add metric table. Choose the schema and the table or view, the same way as for event tables. The metric table is named after it, for example finance.daily_mrr. Only workspace admins can add and configure metric tables. Then click Next: Columns: Mitzu reads the column list from the table's definition, without reading any rows, and suggests a role for each column from its type.

Step 3: Preview the table (optional)

Preview table is optional: it reads up to 1,000 rows, fills in a sample value for each column and detects how much time one row covers, from hourly to yearly. On BigQuery, previewing a table reads its first rows without running a query, which BigQuery doesn't charge for. A view has no stored rows, so previewing one runs a regular query.

Step 4: Give each column a role

  • Time: date.
  • Metric value: mrr named MRR with Use the latest value; revenue_booked named Revenue booked with Add up; active_subscriptions with Use the latest value.
  • Dimension: plan_type, linked to the matching property when one exists, so an insight filter on plan applies to the metric too.
  • Identifier · Company: company_id. A line under the columns says what joins, for example company_id joins 1 Company dimension table, adding Industry, Plan, Region +4.

Each ID should appear once in the dimension table: Mitzu doesn't check this, and a company with two dimension rows would have each of its metric rows counted twice.

Step 5: Save

Click Save. Mitzu blocks saving and says why when there is no metric value column or when more than one column is marked as the time column. To change the grain or the columns later, select the metric table and click Configure.

Step 6: Chart it

In a segmentation insight, click Select an event and pick the metric from Warehouse metric. Choose the date range and time grain, then break it down by a dimension column or any property its identifier joins. A Warehouse metric badge next to the date range names the table, so nobody mistakes it for an event count.

A Mitzu segmentation insight with the warehouse metric MRR broken down by plan type over three months as a monthly trend: Enterprise grows from 13K to 52K, Pro from about 5.5K to 23K and Starter from about 2.3K to 8.8K, with a Warehouse metric badge above the chart
MRR from a warehouse table, broken down by plan, as a monthly trend in a segmentation insight.

Step 7: Combine it with behaviour

Add an event segment and a formula. With Revenue booked as A and unique users of Login as B, A / B gives revenue per active user, week by week. Both segments use the same date range and time grain, so their periods line up.

Step 8: Put it on a dashboard, or just ask

Save the insight and add it to a dashboard next to activation and retention. Or ask the Analytics Agent in business terms: "What was our MRR by plan in September?" or "Revenue booked per active user each week". The agent sees the same warehouse metrics as the event picker, with their tables, roll-up rules, grains and break downs, and builds a segmentation insight that opens like one you built yourself. When you ask for something the table can't support, such as hourly MRR from a daily table, it says why and offers what it can do.

Good to know

  • Where they appear. Warehouse metrics are offered for the first segment of a segmentation insight, not in funnels, retention or journeys, and cohorts don't apply to them.
  • Whole periods. On a weekly or monthly table, a date range that starts or ends inside a period counts the whole period, and the chart says so with a badge such as Covers Sep 1 – Oct 31 (whole months). A daily table counts the exact range.
  • Entity properties are current. A company's industry or plan comes from its dimension table as it is today, not as it was on the day of the row.
  • New columns. Mitzu keeps the column list of a table for up to 24 hours. After adding a column in the warehouse, refresh it from the table picker.
  • The name. You set them up as metric tables in workspace settings; in charts, in the agent and on dashboards they are warehouse metrics.

The teams Warehouse Metrics is for

  • Analytics engineers and data analysts who already model revenue and subscriptions in dbt, and want product teams to use that definition instead of rebuilding it.
  • Product and growth leads who want MRR, revenue and support load next to activation and retention on one dashboard.
  • Founders and operators who ask business questions in plain language and want the answer to match the finance report.

FAQ

What is a warehouse metric in Mitzu?

A warehouse metric is a value column of a table or view in your data warehouse, such as MRR or revenue booked, that Mitzu charts like any other metric. The table has one row per period; Mitzu applies date ranges, time grain, roll-up rules, filters and break downs on top, and reads the table in place.

Can I use my dbt models and dbt metrics in Mitzu?

Yes. Any table or view your dbt project materializes in the warehouse can be a metric table, as long as it has a date or timestamp column for time (or no time column at all, for a single current number). Mitzu reads the model's output; it doesn't need dbt Semantic Layer (formerly the dbt metrics layer) or MetricFlow definitions.

How does Mitzu roll up MRR to a month?

With the roll-up rule you pick for the metric. For MRR, choose Use the latest value: each month shows the most recent day that has rows in that month, adding up every row on that day. Summing daily MRR would count the same revenue thirty times.

Is Warehouse Metrics a BI tool?

No. Mitzu is an agentic product analytics platform that runs on your data warehouse. Warehouse Metrics lets it read business numbers your warehouse already holds, so they can sit next to behavioural analysis such as funnels, retention and segmentation. Modelling those numbers stays in your warehouse and your existing tools.

Does my data leave the warehouse?

Mitzu doesn't copy it. It queries the table in place, the same way it queries event tables, and reads back only the query results it needs to draw a chart. The one time it reads raw rows is Preview table: when you click it, Mitzu reads up to 1,000 rows to suggest roles and detect the grain.

Can the Analytics Agent answer questions about warehouse metrics?

Yes. The Analytics Agent sees every warehouse metric with its table, roll-up rule, grain, dimension columns and joined dimension tables. It builds a segmentation insight on the metric, so its answer follows the same rules as a chart you build yourself, and the SQL comes from Mitzu's deterministic query engine.

References

Key Takeaways

  • Not every number a product team cares about starts as an event; revenue and subscription numbers usually live in modelled warehouse tables.
  • Rebuilding those numbers from events in a second tool is how a company ends up with two versions of revenue.
  • Warehouse Metrics reads the modelled table as it is, so the definition lives in one place: your warehouse.
  • Roll-up rules make longer periods correct by design: monthly MRR is the last day's MRR, not the sum of thirty of them.
  • Combining a warehouse metric with an event metric in one formula answers questions neither side could answer alone, such as revenue per active user.

About the Author

István Mészáros

Co-founder & CEO

LinkedIn: https://www.linkedin.com/in/imeszaros/

Co-founder and CEO of Mitzu. Passionate about product analytics and helping companies make data-driven decisions.

Share this article

Subscribe to our newsletter

Get the latest insights on product analytics.

Ready to transform your analytics?

See how Mitzu can help you gain deeper insights from your product data.

How to get started with Mitzu

Start analyzing your product data in three simple steps

Connect your data warehouse

Securely connect Mitzu to your existing data warehouse in minutes.

Define your events

Map your product events and user properties with our intuitive interface.

Start analyzing

Create funnels, retention charts, and user journeys without writing SQL.