Pro · Lesson 6 of 9

Models and metrics

Models curate columns. Metrics name a measure once. Questions should start there.

Sign in to save your place.

Picture it this way

A model is the cleaned shelf you want people to pull from. The raw table may have ten date columns and three amount columns. The model keeps the ones with agreed names. A metric is the label on the jar, such as Revenue, so two people do not invent two sums.

Models are the starting point

A model is a saved question you mark as a model, or a model you build in the editor. People start new questions from it instead of from the raw table. You set display names, descriptions, visibility, and semantic types on its columns. Hidden columns stay out of the picker. That metadata is the beginning of a semantic layer: one meaning, used in many charts.

Put the joins and the business filters that everyone shares inside the model. Leave the local filter, such as "this team" or "this month", to the question. If every question repeats the same three joins, those joins belong in the model.

LayerOwnsDoes not own
Warehouse tableGrain and stored rowsChart titles
ModelColumns people may use, and shared logicOne team's date range
MetricOne named aggregationThe dashboard layout
QuestionA specific cut of a modelA second definition of revenue

Metrics, and the older screen

Define a metric when a measure must mean the same thing everywhere. Revenue might be the sum of amount where status is paid. Once that metric exists on the model, the query builder can use it instead of asking each author to retype the sum and the filter.

Older Metabase versions had a separate Metrics admin that was removed. If you still see that legacy screen, treat it as history and move the definition onto a model. Do not maintain two formulas. The semantic layer is the model plus its metrics and column metadata, not a second warehouse.

-- The idea of a metric, written out so you can check it.
-- In Metabase you define this once on the model.
SELECT SUM(amount) AS revenue
FROM orders
WHERE status = 'paid';

Describe the grain in the model description

Write "one row per paid order" where a colleague will see it. A perfect chart on the wrong grain is still wrong.

Start from the model

Define clean data and key numbers once, then build every question on top.

  1. ModelA curated, described table
  2. MetricA calculation defined once
  3. QuestionBuilt from both

Step 1 of 3A model is a saved, cleaned-up table, for example Completed orders, with descriptions on each column. It is the trusted starting point.

New → Model → Orders where Status = Completed

Practice

Turn one trusted question into a model. Rename two columns, hide one technical key, and write a one-sentence description of the grain. If your Metabase version offers metrics on models, add one named measure and build a question that uses it without retyping the formula.

Knowledge check

What problem does a model solve?

What is a metric for?

Where should a join that every question repeats live?

Official sources

Checked against vendor documentation in October 2026. Screens and plan names still change, so confirm the control in your own instance.