When a summary table and the detail disagree, which one should the semantic layer use?
A daily summary is faster, but it is not the same number when the filter, grain, or refresh time differs. The semantic layer has to say when a substitution is allowed.
One metric is calculated, one is materialized. Why do freshness and filters disagree?
A calculated metric follows detail. A materialized metric stops at the last refresh. The semantic layer has to name the implementation and its watermark.
Why does the same East China predicate change the result when it moves from the metric into the query?
A metric filter is part of the definition. A query filter constrains only this plan. A display filter does not rewrite the measure. Ratios follow the placement.
Why do saved queries change after a semantic model is hot-updated?
A saved query that rebinds to the latest definition changes when the model changes. The plan should pin a semantic version and move only through an explicit migration.
A contract was effective last month but entered today. Should historical reports change?
Bitemporal modeling separates when a fact was valid in business from when the system knew it, supporting original publication, late correction, and restated views.
Why do tonnes, kilograms, cases, and pieces fail to reconcile?
Treat quantity and unit as one value, with physical dimension, standard unit, packaging version, conditions, effective period, precision, and controlled conversion paths.
Customer segments change every day. Should every change create a new SCD2 row?
Separate stable customer identity from controlled, rapidly changing profile combinations, then stamp both keys onto facts so historical state remains queryable without dimension explosion.
Why do cross-border totals drift? Model transaction, functional, and reporting currency separately
Every amount needs a currency and governed exchange-rate context. Preserve original amounts, date roles, rate types, quote direction, adjustments, rounding, and policy versions.
How should shared freight and platform fees reach order profitability?
Model a governed cost pool and a versioned allocation bridge. Preserve eligible scope, drivers, weights, allocated amounts, rounding residuals, replay evidence, and the distinction between attribution and causality.
Why does a dimension need a surrogate key when the customer code is already unique?
A business key identifies an entity in a source; a surrogate key anchors a warehouse row across source integration, key reuse, and historical versions.
Does a fact table still make sense when there is no amount or quantity?
Attendance, eligibility, assignment, and promotion coverage can be modeled as factless event or coverage facts, counted by rows and compared through anti-joins.
Why should account and inventory balances not be summed across days?
Balances can aggregate across accounts or items at one point in time but not over time. Ending, opening, average, and flow each need distinct semantics.