skip to content

What are conformed facts, and what breaks when two marts define revenue differently?

level: middleimportance: should knowfreq 45%

answer

  1. conformed dimensions align rows, facts align numbers
  2. same name should mean same calculation
  3. think discounts, tax, shipping, cancellations
  4. currency and units are part of the definition
  5. if they differ, rename rather than reconcile

basics

~20 s

Conformed facts are measures that share a name only when they share an identical definition - same calculation, units, currency and inclusion rules. When two marts both call something revenue but compute it differently, cross-mart comparison produces confidently wrong numbers with no error.

solid answer

~40 s

Conformed dimensions make the *labels* comparable; conformed facts make the *numbers* comparable. A measure is conformed when every fact table that carries it computes it the same way: the same inclusion rules, the same units and currency, the same treatment of tax, discounts, cancellations and refunds. The governing rule is blunt - **if two measures are not identically defined, give them different names**. `gross_revenue` and `net_revenue` sitting side by side are honest; two columns both called `revenue` that differ on whether shipping is included are a trap, because someone will add or compare them. The failure mode is silent: nothing errors, the drill-across joins cleanly on the conformed dimensions, and the report shows a variance that is pure definitional artefact. Detecting it costs a reconciliation exercise; preventing it costs a naming decision.

code

text · 9 lines
text
orders_mart.fact_orders.revenue
  = unit_price * qty            (gross, before discount, no shipping)

finance_mart.fact_invoices.revenue
  = unit_price * qty - discount + shipping - tax

-- Both columns are called "revenue".
-- Any report subtracting one from the other reports a
-- definitional artefact as if it were a business variance.

go deeper

for a junior

Know that a conformed fact is a measure defined identically everywhere it appears, and that two columns called revenue computed differently must not be compared.

for a middle

Explain what belongs to a measure's definition - calculation, inclusions, units, currency, sign convention - and state the naming rule: identical definition means identical name, otherwise rename.

for a senior

Demonstrate how you would find drift in production with reconciliation queries over conformed dimensions, and how you would handle a currency or rate-policy difference that makes two identically calculated measures non-comparable.

for a principal

Own the governance angle: no constraint can enforce a definition, so it takes a single owning team per measure, written inclusion rules, and a change path that moves every consumer at once.

## The half of conformance people forget Conformed dimensions get all the attention, and they solve half the problem: they make sure `Footwear` means the same set of products in every star, so the rows of a cross-process report line up. Conformed facts solve the other half. Once the rows line up, the question becomes whether the *numbers* in them are comparable, and that depends on whether the measures were defined the same way. A fact is **conformed** across fact tables when the measure means exactly the same thing everywhere it appears: - **the same calculation** - is revenue gross of discounts or net of them; - **the same inclusion rules** - does it include shipping, tax, cancelled orders, internal transfers, test accounts; - **the same units and currency** - grams or kilograms, and if currency, converted at which rate on which date; - **the same sign convention** - are returns negative revenue or a positive amount in a separate measure; - **a compatible grain interpretation** - a measure that is meaningful per line item may not be simply summable at order level. ## The naming rule The practical discipline is a naming rule: **identical definition, identical name; different definition, different name.** This sounds trivial and is the single highest-leverage habit in the whole area, because a shared name is an implicit promise that the two numbers can be added, subtracted and compared. If the order-entry mart's `revenue` is gross of discounts and the finance mart's `revenue` is net of them, the promise is false, and the model itself is lying to every consumer. Renaming to `gross_revenue` and `net_revenue` is not a cop-out; it is the correct outcome when the business genuinely needs both. The unacceptable outcome is two identically named columns with different semantics. ## How the failure actually shows up The failure is quiet, which is what makes it costly. Consider a drill-across report combining an order-entry fact and an invoicing fact by month: ```sql -- Both columns are called revenue; only one includes shipping SELECT COALESCE(o.year_month, i.year_month) AS year_month, o.revenue AS order_revenue, i.revenue AS invoiced_revenue, o.revenue - i.revenue AS variance FROM orders_by_month o FULL OUTER JOIN invoiced_by_month i ON o.year_month = i.year_month; ``` Every join is correct, every dimension is conformed, no query errors. The `variance` column is nonetheless meaningless: it is a definitional difference, not a business signal. Someone will build a dashboard on it, someone else will open an investigation into a leakage that does not exist, and the finance team will spend a quarter reconciling two numbers that were never supposed to match. Unconformed facts do not break reports; they break trust. ## Currency and unit conformance A measure expressed in different currencies is not conformed even when the calculation is identical, and this is a frequent real-world case for multinational businesses. If one regional fact table stores local currency and another stores a converted amount, they cannot be summed. The usual resolution is to carry both - a local-currency measure and a standardised measure converted at an explicitly stated rate - with names that say which is which. The rate policy (transaction-date rate, month-end rate, budget rate) is part of the definition, so two standardised measures using different rate policies are still not conformed. ## Semi-conformance and honest partial agreement Sometimes two processes genuinely cannot produce the same measure. An order fact can count units ordered; a shipment fact counts units shipped. These are different measures and should be named differently - and that is the *correct* answer, not a failure. Conformance does not mean forcing every process to report identical measures; it means never disguising two different measures as one. ## How you make it stick Conformed facts are enforced by process rather than by the database, since no constraint can check a definition. The practical mechanisms are a written definition attached to every measure that says what is included and excluded, a single owning team per measure, a naming convention that surfaces variants explicitly, and periodic reconciliation queries that compare the same measure computed from two fact tables and alert when the difference exceeds an agreed threshold. When a definition must change, it changes for all consumers together, exactly as with a conformed dimension - a measure that means one thing in one report and another thing in the next is the failure this whole discipline exists to prevent.

  • Two regional fact tables store an identically calculated revenue measure but in different local currencies. Are those facts conformed?
    No. Units and currency are part of a measure's definition, so the two cannot be summed or compared directly. The usual fix is to carry both a local-currency measure and a standardised converted measure whose names state which is which, and to treat the conversion rate policy - transaction-date, month-end, budget rate - as part of the definition too.
  • An order fact counts units ordered and a shipment fact counts units shipped. Is that a conformance failure?
    No - they are genuinely different measures and should carry different names. Conformance never means forcing every process to emit identical measures; it means never disguising two different measures under one name. Naming them units_ordered and units_shipped is the correct outcome, and it lets a drill-across report show both honestly.
  • How would you detect that two fact tables have silently drifted apart on a shared measure?
    Run a scheduled reconciliation query that computes the measure from both fact tables over the same conformed dimension attributes and period, and alert when the difference exceeds an agreed threshold. Because unconformed facts never raise an error, a periodic comparison is the only mechanical detector; the written definition is what tells you which side is wrong.

saying these in an interview costs you the question

  • Assumes two columns with the same name hold comparable numbers
  • Treats a definitional variance as a real business signal
  • Thinks conforming facts means every process must report the same measures
  • Ignores currency and unit differences as a formatting concern
  • Believes a database constraint can enforce a measure definition

context