顾名思义,缓慢变化维(Slowly Changing Dimension)就是变化相对缓慢(相对与快速变化的事实表来说)的维度。
在维度建模理论中,有8种处理方式,包括基础的5种以及混合的3种。
再加上大数据时代的2种极限型,共10种,具体如下:
1 基础型
1.1 方式0:保留原始值
维度属性值不做更改,保留原始值。
此方式什么也不做,所以称之为方式0。
- 比如商品上架售卖时间:一个商品上架售卖后可能由于缺货下架,补充库存后又再次上架,此种情况产生了多个商品上架售卖时间。如果重点关注的是商品首次上架售卖时间,则采用方式0。
- 比如商品所属供应商:a商品的供应渠道是某供应商,随着时间推移可能转款到b供应商(由b供应商来供货),此种情况如果关注的是原始最初供应的供应商,则采用方式0。
1.2 方式1:直接覆盖
修改维度属性为最新值,直接覆盖,不保留历史信息。
- 比如商品属于哪个品类:当商品品类发生变化时,直接重写为新品类,如果业务只关心最新的品类。
1.3 方式2:增加新行
在维度表中增加新的一行,新行中采用新的属性值。此种方式需要借助代理键,需要为新行分配新的代理键,将其作为事实表的外键。
采用此方式,一般会在维度行中额外增加3列:行生效时间,行失效时间以及当前行标识(或者不使用当前行标识,由行失效时间来判断是否是当前行)
此方式及其变种是处理缓慢变化维的主要技术。
比如
维度属性值变化前:
| 商品键(代理键) | 商品唯一键(自然键) | 品类 | 行生效时间 | 行失效时间 | 当前行标识 |
|---|---|---|---|---|---|
| 1 | SPU001 | 科技 | 2020-01-01 | 9999-12-31 | 1 |
维度属性值变化后:
| 商品键(代理键) | 商品唯一键(自然键) | 品类 | 行生效时间 | 行失效时间 | 当前行标识 |
|---|---|---|---|---|---|
| 1 | SPU001 | 科技 | 2020-01-01 | 2020-01-31 | 0 |
| 3 | SPU001 | 教育 | 2020-02-01 | 9999-12-31 | 1 |
1.4 方式3:增加新属性列
在维度表中增加新的一列,原先属性列存

本文详细介绍了在数据仓库中处理缓慢变化维的10种方法,包括基础型(保留原始值、直接覆盖、增加新行、增加新属性列、增加微型维度)、混合型(微型维度与方式1支架表、将方式1属性增加到方式2维度、双重外键并且方式1与方式2结合)和极限型(快照维度、历史拉链维度)。这些策略旨在平衡数据的历史信息和当前状态,确保数据的准确性和完整性。
最低0.47元/天 解锁文章
1074

被折叠的 条评论
为什么被折叠?



