Source: transaction business key
Location: directly in fact
Use: trace, group, drill
Limit: not an additive measure
Promote: model header when attributes appear
Keep a business identifier in the fact when it has no attributes
An order number groups several lines but often has no descriptive attributes for a separate dimension. A key-only table adds a join without meaning.
This business key is a degenerate dimension stored directly on the fact.
Do not confuse it with the fact surrogate key
A surrogate identifies one fact row; an order number identifies a business transaction. The same order number can exist in several source systems.
Retain source scope and original formatting, with a normalized matching key if needed.
Use it for detail and distinct counting
It supports drill-through, order grouping, distinct order count, lines per order, and reconciliation across facts.
Name order count, line count, and customer order frequency separately instead of treating the identifier as a measure.
Reconsider when header attributes grow
Channel, shipping address, whole-order status, or discount may justify an order-header fact or dimension depending on grain and change behavior.
Avoid copying header amounts to every line and summing them repeatedly.
Test queries across grains
Reconcile line amount, distinct orders, partial returns, split orders, duplicate source numbers, and header attributes.
BuildTable can support grain and key definition; recognition, uniqueness tests, and generated query behavior need POC verification.
Public references
Build an AI-ready data foundation
Contact us to discuss your data modeling scenario and access BuildTable Desktop.
Contact us