Declare measurement grain before calculation
Answers Mereology · Modality · Derivation · Semantics · Deontics
An Event is a business-process fact, a Signal is the governed instrument, a Metric is the calculation, and a KPI serves a Goal. A rate or aggregate may not silently change the grain of its inputs, including an explicitly composed Metric.
What goes wrong without it
A rate means nothing unless everyone agrees what one instance of its numerator and its denominator represents. Marketing reporting fails less often because a number is wrong than because two numbers computed at different grains were divided — sessions over people, clicks over sends — and nothing in the output says so. Declaring the grain first is what makes the calculation reproducible by someone who did not write it.
What proves it — 2
Each is a gate the build runs: a check inside a ring, a whole ring, or an eval beside them. A build stops at the first that refuses.
- registry integritycalculation and projection integrity
Formula inputs, metric composition, cardinality, and plan projections satisfy their declared contracts. - registry integritydistinct definitions
No two rows of different kinds are defined in the same words, and no definition restates a field the row already carries, so a distinction the model commits to is carried where a reader meets it and nothing the model knows is stored in two places at once.
Derived from — 1
- Kimball GroupDeclaring the Grain
Kinds it licenses
Relationships it licenses
observes event · counts in numerator · counts in denominator · has metric · serves goal · takes as numerator · takes as denominator
Where this model stands
The measurement spine runs Event → Signal → Metric → KPI → Goal, and every reading of performance follows it.
Metric and KPI rows are distinct; direct Event → KPI assertions are intentionally absent.
Every KPI names at least one Metric, and a derived rate names the Metrics it divides.
What it does not claim
A real plan still needs structured grain, unit, numerator, denominator, window, source, and join-key fields before calculation can be reproduced.
RUL-001