Slow Change Dimension in DW

Kopei article

What is Slow Change Dimension

SCD缓慢变化维是指维度的值会随着时间缓慢变化. 当维度值变化时, 我们可以直接把旧的值覆盖, 也可以存储一行新的值(把旧的记录无效), 还可以加一个字段使用列式存储新的值. 所以基本上SCD有几种类型:

  • type 1, 覆盖旧的值, 不保留历史信息
  • type 2, 保留旧的值, 使用一个字段表示它无效, 插入一行新的维度记录. 每行增加effective_date, expiry_date字段
  • type 3, 保留旧的值, 仅增加几个新的字段存储几个历史版本值, 增加effective_date字段
  • type 4, 把历史数据存入另一个表中, 当前维表保存最新的数据

Comparison of type2 and type3

type2通常情况下可以满足大部分需要保留历史数据的需求, 但是如果一次插入行的记录过多的话, 也可以考虑使用type3. type3的确定是只能保留固定的版本数量, 但是我们不知道需要几个版本记录需要保留.

How slow is slow?

一般缓慢的程度以一个季度作为分界点, 如果维度一个月就会变化, 就应该以其他方式处理. 但是如上的表述往往是不准确的, 一个维度中可能有几个维度是快速变化的,而有几个不怎么变化, 那么还需要从几个方便考虑:

  • 维度表的行数, 如果行数越多可能越有可能不是缓慢变化维
  • 维表中一个维度属性和其它属性的耦合关系, 越松耦合越可能这个属性是快速变化维
  • 第三是如果维表中其它属性都不怎么变化, 而某个属性经常变化, 那么这个属性是快速变化维

针对SCD中某几个属性是快速变化维的情况, 我们有单独的处理方式.

Rapidly Change Dimension

那么我们怎么处理快速变化维呢? 很简单, 只需要把这个维度放入事实表就行. 这种维度属性我们叫degenerate dimension退化维度.

  • Post title:Slow Change Dimension in DW
  • Post author:Kopei
  • Create time:2021-06-18 00:00:00
  • Post link:https://kopei.github.io/2021/06/17/data-warehouse-2021-06-18-SCD/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments