Slowly Changing Dimension

Lesson Notes

Slowly Changing Dimensions Lesson Notes

Video

Slowly changing Dimensions

  • It the dimension which changes over time. So, for a specific date we have different value.

  • It has different types as following

    • Type 0 (Fixed Dimension): We don’t change the current even the source changes.

    • Type 1 (No History): No history is maintained only the latest replace the current.

    • Type 2 (History): Series of history of records are maintained.

    • Type 3 (Hybrid): Only the last Change and the Current new change is stored

    • Type 4 : We split the data into two tables, first the current record and second is the historical (most common usage).

Slowly changing Dimensions Other Types

There are some other types which is a combination between the above similar than type 3 combined between 1 | 2.| You can check the chapter resources for more information about the other types.

Slowly changing Dimensions Types

Type 0

No update if the previous dimension updated.

  • Ronaldo current address in Madrid

    CustomerID Name City
    123456789 Ronaldo Madrid
  • Ronaldo updated his to Turin

    CustomerID Name City
    123456789 Ronaldo Turin
  • Results in type 0 will not updated.

    ID CustomerID Name City
    1 123456789 Ronaldo Madrid

Type 1

  • Ronaldo current address in Madrid

    CustomerID Name City
    123456789 Ronaldo Madrid
  • Ronaldo updated his to Turin

    CustomerID Name City
    123456789 Ronaldo Turin
  • Results in type 1 will update the record without history maintenance.

    ID CustomerID Name City
    1 123456789 Ronaldo Turin

Type 2

  • Ronaldo addresses history

    CustomerID Name City UpdatedDt
    123456789 Ronaldo Madrid 2018-12-12
    123456789 Ronaldo Turin 2019-06-12
    123456789 Ronaldo London 2019-08-12
    123456789 Ronaldo Porto 2019-12-12
  • Type 2 will keep all the history and keep the current with terminationDt as null

    ID CustomerID Name City effectiveDt terminationDt isCurrent
    1 123456789 Ronaldo Madrid 2018-12-12 2019-06-12 false
    2 123456789 Ronaldo Turin 2019-06-12 2019-08-12 false
    3 123456789 Ronaldo London 2019-08-12 2019-12-12 false
    4 123456789 Ronaldo Porto 2019-12-12 null true

Type 3

  • Maintain the current and previous only with maintaining the history.
    CustomerID Name City UpdatedDt
    123456789 Ronaldo Madrid 2018-12-12
    123456789 Ronaldo Turin 2019-06-12
    123456789 Ronaldo London 2019-08-12
    123456789 Ronaldo Porto 2019-12-12
    ID CustomerID Name City UpdatedDate previousCity
    1 123456789 Ronaldo Porto 2019-12-12 London

Type 4

  • Split current and historical into two tables.
  • This change help to easy join with only current active records without the needs for the filter such as type 2.
    ID CustomerID Name City effectiveDt TerminationDt
    1 123456789 Ronaldo Madrid 2018-12-12 2019-06-12
    2 123456789 Ronaldo Turin 2019-06-12 2019-08-12
    3 123456789 Ronaldo London 2019-08-12 2019-12-12
    4 123456789 Ronaldo Porto 2019-12-12 null
    ID CustomerID Name City UpdatedDate
    1 123456789 Ronaldo Porto 2019-12-12

Slowly changing Dimensions

  • How does the Facts join SCD? We have two scenarios as following:

    • Getting the current customer information (Join with the latest).

    • Getting the historical customer information (Join with the historical table based on cust id | date).

    ID CustomerID TotalCalls CallDate
    1 123456789 30 2018-12-12
    2 123456789 30 2019-12-12

Slowly changing Dimensions Extraction Example:

```sql
--Get latest customer details from customer profile snapshot
select * from cust_usage_dly a 
inner join cust_profl b 
on a.CustomerID = b.CustomerID;

--Get historical customer details from customer profile hist
select * from cust_usage_dly a 
inner join cust_profl_hist b 
on a.CustomerID = b.CustomerID
and CallDate between effectiveDt and TerminationDt 

```

Further Reading

Dimensional Modeling: In a Business Intelligence Environment. The book is free, and you can download it from this link. You can read the following:

  • Chapter 5.4.6 Slowly Changing Dimensions page 159.
  • Chapter 6.3.5 Slowly Changing Dimensions page 261.
Previous
Next