维度表维度值变化处理-SCD

维度缓慢变化称为SCD,对每个维度表的属性,都需要考虑为其定义处理变化的策略。

类型0 保留原始值

维度属性绝对不会变化,SCD称其为类型0

类型1 重写

对类型1来说,需要重写维度行中的旧值,以当前值替换,属性变化始终反映最近情况。这是应对维度变化最简单的方式,不需要触碰事实表。

问题:无法记录历史值,且若回溯数据则会造成影响。

类型2 增加新行

由于DW/BI的目标之一是正确表示历史,所以类型2可以满足此需求。维度变化时增加新行,同时记录生效失效时间。是精确跟踪缓慢变化维度属性的主要技术,当不能完全确定某一属性SCD业务规则时采用此方法是安全的,还可以提供类型1的重写。

问题:无法确保能够将新属性和过去的历史时间关联起来。

类型3 增加新属性

增加新维度列记录新维度,内涵是认为过去与现在的值都是正确的。

适合应用于某个变化引起维度表大量行变化的情况,或者变化可预测且需要基于任意历史值汇总放入场景。

问题:应用场景极少

类型4 增加微型维度

适用于变化频度较高,维度表数据量很大的场景。建立微型维度表,包含各个维度和一个维度自然键,表里存了这些维度的所有可能场景,对于维度值太多的情况可以进行范围分组分为积累,如金额分为0-1000,10000-2000,>2000三类。在事实表中则需要存储微型维度表的维度自然键和客户主键,以避免产生较大的维度表。

问题:对维度的粗略分类存在问题,因为没有存明细。

类型5 增加微型维度及类型1支架

用于精确保证历史属性值。采用重写的方式把这部分易变的属性分表为单独的表,并且存储基维度和微型维度,采用类型1的方式重写微型维度

类型6 增加类型1属性到类型2维度

保存历史和当前维度属性值。对历史数据进行类型2的增加新行,对于当前数据进行类型1的重写。也就是说数据需要保存时间字段,不论是生效时间失效时间还是DT,都是需要保存,然后如果要修改,那么针对特定关联的所有属性行进行重写

类型7 双类型1和类型2的维度

类型1仅展示当前属性,类型2展示最新历史概要。在事实表存储了自然键和持久键,当前属性通过持久键和事实表关联,历史属性通过自然键和事实表关联。即相当于在事实表增加一个键关联拿到历史上的最新维度,而原有的外健关联当前维度表获取当前维度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容