Skip to content

Slowly Changing Dimensions

For people

How to track changes to descriptive attributes over time in data warehouses, with SCD types explained.

Editorial team 1 min read

Share X LinkedIn Reddit Bluesky Email

Dimension attributes — customer address, product category, sales region — change over time. Slowly changing dimension (SCD) techniques decide how warehouses handle this.

Type 1: Overwrite

Replace the old value. Simple, but history is lost: past sales appear under the current region.

Type 2: Add a Row

Insert a new row for each change, with valid-from and valid-to dates and a current flag. Facts link to the version valid at the time. Preserves full history; most common for important attributes.

Type 3: Add a Column

Keep current and previous values in separate columns. Limited history.

Choosing

  • Corrections of errors → Type 1.
  • Changes that matter for historical analysis → Type 2.
  • Occasional before-and-after comparison → Type 3.

Implementation

Tools such as dbt snapshots automate Type 2 tracking.

Pitfalls

  • Joining facts to the current dimension row when history matters.
  • Type 2 tables growing large when attributes change often.
  • Missing surrogate keys.

More in Data engineering

All Data engineering guides →
Data engineering Guide · 2 min

What Is Data Engineering?

What data engineers do, how data flows from source systems to analysis and AI, and the core skills involved.

Data engineering 2 min read 28 Jan 2026 For people

Data engineering Guide · 2 min

ETL Versus ELT

The difference between transforming data before loading and after, and why modern warehouses shifted the default to ELT.

Data engineering 2 min read 27 Jan 2026 For people

Data engineering Guide · 1 min

Data Warehouses, Data Lakes and Lakehouses

The three main architectures for analytical data storage, what each is good for and how they are converging.

Data engineering 1 min read 26 Jan 2026 For people

Data engineering Guide · 2 min

Data Modelling for Analytics

Star schemas, facts and dimensions: how to design tables that make analysis fast, consistent and easy to understand.

Data engineering 2 min read 25 Jan 2026 For people

Discussion 0

Use @handle to bring somebody in, and #tag to file it.

Nothing here yet. Ask a question, or say how you used it.

Sign in to join the discussion. Sign in