SCD Processing Types

Most people will tell you there are three different ways to process a dimension. There are actually seven you just rarely see the other four out in the wild.

Below is a table of SCD processing types and descriptions of how they work.

Type

Short Description

Description

Real World Use Case

0

Do nothing

No, I'm not kidding. Do absolutely nothing. The data in a Type 0 dimension is functionally immutable.

DimDate

1

Overwrite

You do not keep history. New values simply overwrite the old.

You don't care what the old values are.

2

Add a row

You create a new row that represents the current state of the data and deprecate the old row.

This is the most common method to manage a SCD.

3

Add a column

You add a column to the table that represents an older value. You use this when you only want to keep one step of history. That said, this is a really poor way to manage SCDs.

Keeping track of maiden names using a Type 3 SCD is the optimistic method of keeping track of maiden names.

4

Add a history table

With this method, you keep the history in a separate table and the main table represents the current state of the data.

This is how SQL Server implements Temporal Tables.

There are other types, but after 4 they get a bit arcane. Some of them do not conform to the table load methodology taught by this framework so talking about them is beyond the scope of this document.

Last updated