Theory
Dimensions change. Your model decides who notices.
When a customer moves house, do reports about last year's orders show the old city (truth-as-of-then) or the new one (truth-as-of-now)? That choice is encoded as an SCD type:
- SCD Type 1 — overwrite. History lost. Cheapest.
- SCD Type 2 — new row with
valid_from / valid_to / is_current. The industry default for analytics. - SCD Type 3 — keep a previous_value column. Useful for one specific change, not general history.
Data Vault is the heavier alternative — Hubs (business keys), Links (relationships), Satellites (descriptive + historical attributes) — designed for regulated, multi-source warehouses where auditability and source-system independence matter more than query simplicity. Reach for it when Kimball starts feeling brittle under merger/acquisition data churn.