Define a metric once
Metricflow keeps the definition of each number in one file, so a report cannot quietly disagree with another.
It is a single binary. Point it at your database, write metric files, query them by name.
- A metric is declared once and referenced by name.
- The same dimensions apply everywhere.
- Every change is a diff in version control.
- Numbers are pulled by whatever you already use to report.
A metric file
Files live in a repository and are reviewed before they take effect.
metric "active" {
source = table("events")
measure = count_distinct("user_id")
where = "kind = 'seen'"
by = ["plan", "day"]
}
Why it stays consistent
Reports never write their own aggregation. They ask for a named metric sliced by a dimension, so two people always get the same number.