概述
尽管维度表属性相对稳定,但它们不可能是一成不变的,尽管相当缓慢,属性值仍会随时间发生变化。最常用的SCD为:类型1(重写)、类型2(增加新行)、类型3(增加新属性)
按类型详情
类型0:保留原始值
标记为类型0,维度属性值绝对不会变化,因此事实始终按照该原始值分组。可以应用到日期纬度的大多数属性中。
维度表的主键是代理键而不依赖操作型自然逐渐。尽管将自然键降级为普通纬度属性,但它仍然具有特殊意义。假设其具有持久性,这一特性是不可改变的。持久性键始终是类型0属性。
类型1:重写
类型1是应对维度属性变化最简单的方法。使用当前值重写维度行中的旧值,属性始终反应最新状态。
因为重写删除了历史属性值仅保存了当前最新的属性值。入股对属性变化不在意,或不需要保存过去的描述,适合采用类型1。
类型2:增加新行
类型2是精确跟踪缓慢变化维度属性的主要技术,因为新维度行能够自动化分事实表的历史,因此这是一种非常好的技术。
与类型1不同,在适用类型2技术时,不需要再次考虑先前存在的聚集表。同样,如果层次属性被当成是类型2属性时,OLAP多维数据库也不需要重新处理聚集结果。
当维度表包括类型2属性时,应该为每行增加几个方便管理的列:有效日期和失效日期
类型3:增加新属性
类型3包含被认为同事正确的当前和过去属性键值。
类型4:增加微型维度
微型维度:采用不同的维度消除频繁分析或频繁变化的属性。
当变化率加快时,特别时针对大型的包含几百万行的维度表,对变化的跟踪若采用可靠的类型2技术时不合适的,因为我们不希望包含大量的维度表上增加更多的行,特别是面对变化频繁发生的情况。
在建立微型维度时,不断变化的属性被转换为带状范围值。换句话说,微型维度中的属性通常呈现为相对小范围的离散值。尽管此类限制使用了预定义范围的集合,但它能够极大地减少微型维度中合并值的数量。
当微型维度主键作为事实表的外键或参与其中的好处:
1)微型维度通过提供针对事实的更小入口点二提高了性能
2)事实表可获取统计意义的变化的轮廓。
类型5:微型维度与类型1支架表
类型6:将类型1属性增加到类型2维度
类型7:双重类型1与类型2维度
缓慢变化维总结
SCD | 维度表行动 | 对事实分析的影响 |
---|---|---|
类型0 | 属性值无变化 | 事实与属性的原始值关联 |
类型1 | 重写属性值 | 事实与属性的当前值关联 |
类型2 | 为新属性值增加新维度行 | 事实将与在事实发生时有效的属性值关联 |
类型3 | 增加新列来保存属性当前和原先的值 | 事实与当前和先前属性的交替值关联 |
类型4 | 增加包含快速变化属性的微型维度 | 事实与事实发生时有效的变化属性关联 |
类型5 | 增加类型4微型维度以及在基本唯独中重写类型1微型维度键 | 事实与事实发生时有效的变化属性关联,加上当前快速的属性值 |
类型6 | 在类型2维度行中增加类型1重写属性,并重写所有原先的维度行 | 事实将与在事实发生时有效的属性值关联,加上当前值 |
类型7 | 增加包含新属性值的类型2维度行,加上限于当前行和属性值的视图 | 事实将与在事实发生时有效的属性值关联,加上当前值 |