The dimension that changes — and what to do about it
Customers move countries. Products change categories. Tier assignments shift. Dimension attributes change over time, and the question "what was their tier when this order was placed?" is suddenly more interesting than it looks. Kimball's answer is the family of slowly changing dimension (SCD) types. Two of them — Type 1 and Type 2 — cover almost every real case.
SCD Type 1 — overwrite
The dimension always reflects the current state. When a customer moves from 'KR' to 'US', you overwrite the country column. Past facts now appear to have always been associated with a US customer. Simple, low storage, no history.
Use when: the historical attribute value doesn't matter (correcting typos, updating profile photos, fixing data-entry errors). "As-of" reporting against the dimension is not needed.
SCD Type 2 — versioned history
Every change to a tracked attribute creates a new row in the dimension table, with effective-from / effective-to timestamps and a current-flag. The fact table joins on customer_key at the time the fact happened, so historical reports show the customer's then-current attributes.
Use when: the historical value matters. Revenue by country needs to attribute past orders to where the customer actually was at the time, not where they are now.