Six strategies for managing slowly changing dimensions

Dimensional modeling patterns resolve evolving attributes, balancing straightforward query access against the need for rigorous historical audit trails.

When designing a data warehouse, one of the most critical questions a data architect faces is:

How do we handle data that changes over time?

Some data attributes, like date of birth or Social Security number, remain constant. Others, like email address or employer name, evolve. Managing these evolving attributes while maintaining an accurate history is what makes slowly changing dimensions essential to robust data warehouse design.

This article explains all six SCD types — their logic, use cases, and trade-offs — using clear examples and practical insights for modern orchestration tools like dbt, Mage, Prefect, or Dagster.


What Is a Slowly Changing Dimension?

A slowly changing dimension (SCD) refers to a dimension table in a data warehouse that stores and tracks changes to attribute values over time. As a core component of data warehousing, SCDs allow businesses to capture evolution. Unlike static dimensions, which never change, SCDs evolve — requiring specific dimensional modeling strategies to decide whether to overwrite, append, or version historical data.


SCD Type 0: Keep Original Values

Type 0 dimensions never change once created.
Attributes such as Full Name, Date of Birth, or SSN retain their original values permanently.

Example: Customer’s Date of Birth or Country of Birth

Use Type 0 when historical accuracy depends on preserving the original data without alteration.


SCD Type 1: Overwrite Existing Data

Type 1 replaces old values with new ones.
This method is simple, storage-efficient, and ideal for corrections or attributes that don’t require historical tracking.

Example:
A customer updates their email address after changing jobs.

Customer ID

Customer Name

Customer Email

1

Peter

peter@structureddata.com

Type 1 works best in data warehouse design when you only need the most recent value and don’t care about history — for instance, correcting a typo or updating contact information.


SCD Type 2: Add a New Row

Type 2 is the most widely used SCD technique in data warehousing.
Add a new record each time an attribute changes, preserving all historical versions through comprehensive historical data tracking. You can identify the current record using columns such as:

  • Is_Active

  • Version

  • Start_Date / End_Date

Example (Is Active Flag):

Row ID

Customer ID

Name

Email

Is Active

1

1

Peter

peter@technology-hub.com

No

2

1

Peter

peter@structureddata.com

Yes

Example (Date Range):

Surrogate ID

Customer ID

Email

Start Date

End Date

1

1

peter@technology-hub.com

01-Feb-2023

01-Jan-2024

2

1

peter@structureddata.com

01-Jan-2024

NULL

The current record’s End_Date is always NULL.

Use Case:
Tracking employment history, address changes, or customer status transitions within your dimensional modeling strategies.

Implementation Tip:
Tools like dbt or Azure Synapse Pipelines can automate Type 2 logic using MERGE or SCD components.


SCD Type 3: Add a New Attribute Column

Type 3 stores limited historical data by adding a new column for the previous value.

Example:

Customer ID

Name

Current Email

Previous Email

1

Peter

peter@structureddata.com

peter@technology-hub.com

Type 3 is ideal when you only need to compare current vs. last value — such as tracking a customer’s prior region or last manager.


SCD Type 4: Add a History Table

Type 4 separates active and historical data into two tables to streamline data warehouse design:

Active Table

Row ID

Customer ID

Name

Email

Start Date

End Date

3

1

Peter

peter@oracle.com

01-Jun-2023

NULL

History Table

Row ID

Customer ID

Email

Start Date

End Date

1

1

peter@technology-hub.com

01-Feb-2022

01-Jan-2023

2

1

peter@structuredata.com

01-Jan-2023

01-Jun-2023

This approach works well when you frequently query only current records but still need a complete historical audit trail.


SCD Type 5: Combine Type 4 and Type 1

Type 5 combines the strengths of Type 4 (history table) and Type 1 (overwrite in base table).

You maintain:

  • A base dimension with current values.

  • A history table with all changes.

  • A foreign key link between the two.

Example:

Customer Table

Customer ID

Name

Email

Employer ID

1

Peter

peter@oracle.com

3

Company Table

Company ID

Company Name

1

Technology Hub

2

StructuredData

3

Oracle

Employment History Table

Customer ID

Company ID

Start Date

End Date

1

1

01-Feb-2022

01-Jan-2023

1

2

01-Jan-2023

01-Jun-2023

1

3

01-Jun-2023

NULL

This design is a sophisticated choice among dimensional modeling strategies, allowing current mini-dimension attributes to be accessed with the base dimension without linking through a fact table.


SCD Type 6: Combine Types 1, 2, and 3

Type 6 integrates overwriting (Type 1), row versioning (Type 2), and column tracking (Type 3).
It provides a unified view of current, previous, and historical data—all in one table —maximizing the effectiveness of SCD in data warehousing.

Row ID

Customer ID

Name

Current Email

Previous Email

Start Date

End Date

Is Active

1

1

Peter

peter@technology-hub.com

NULL

01-Feb-2022

01-Jan-2023

No

2

1

Peter

peter@structuredata.com

peter@technology-hub.com

01-Jan-2023

01-Jun-2023

No

3

1

Peter

peter@oracle.com

peter@structuredata.com

01-Jun-2023

NULL

Yes

Benefits of Type 6:

  • Enables historical and current reporting from one table.

  • Avoids Type 1’s lack of history and Type 3’s limited scope.

  • Adds flexibility for business audits and machine learning models needing time-based features and historical data tracking.


When to Use Each SCD Type

Type

Method

Best For

Pros

Cons

0

Keep original

Immutable data

Simple, consistent

No change tracking

1

Overwrite

Corrections

Space efficient

No history

2

New row

Historical reporting

Complete audit trail

More storage

3

New column

Compare current vs. previous

Easy access

Limited history

4

History table

Large systems with frequent queries

Clean separation

Complex ETL

5

Type 4 + 1

Hybrid systems

Efficient lookups

ETL overhead

6

Type 1 + 2 + 3

Full hybrid

All-in-one view

Most complex to maintain


Related reading: Type 2 SCDs are one way to preserve history, but they are not the only option. For a methodology built around fully auditable, historized data, see our guide to Data Vault 2.0 modeling.

Leadership Insight: Why SCDs Still Matter

In the age of cloud warehouses and real-time analytics, some teams underestimate the need for slowly changing dimensions — assuming everything can be recalculated.
Yet, regulatory reporting, financial reconciliations, and AI models all require robust accuracy in historical data tracking.

Modern tools like dbt snapshots, Databricks Delta, and Snowflake’s Streams & Tasks make SCD management easier and more automated than ever. In Snowflake, Dynamic Tables can be used for declarative SCD logic, often accelerated by visual interfaces like Coalesce. For Databricks environments, Delta Lake handles SCD logic through MERGE statements, which efficiently manage upserts for Type 1 and Type 2 records. Additionally, tools like Weld now offer automated history tables for specific connectors like Shopify to simplify tracking.

The key is aligning data design with business intent—deciding which dimensional modeling strategies best fit your attributes for long-term preservation.


Summary

Slowly changing dimensions form the backbone of historical accuracy in data warehouse design.
From immutable Type 0 attributes to the hybrid flexibility of Type 6, each approach balances simplicity, storage, and traceability.

When implemented thoughtfully, using the right SCD techniques transforms your warehouse from a static repository into a living system that evolves alongside your business.


References

  1. Slowly Changing Dimensions (SCD) by Arun Kumar Pandey, Ph.D.

  2. Database-datapipeline-ETL GitHub Repository

  3. Populate Slowly Changing Dimensions in Azure Synapse Analytics Pipelines – Microsoft Learn

  4. So You Want a Slowly Changing Dimension? | DoltHub Blog

  5. Mastering Slowly Changing Dimensions (SCD) – DataCamp

  6. SCD: A Complete Guide to Tracking Historical Data – Weld Blog

  7. Slowly changing dimension – Wikipedia