`

数据仓库缓慢变化维度应对策略

 
阅读更多

缓慢变化维

建议仅考虑有分析价值的字段,采用策略记录其变化,否者直接进行UPDATE。


采用拉链表

添加增加有效开始时间,有效结束时间,最新版本标示字段。
比如客户表的婚姻状况发生变化,会新增一条记录,两条记录如下:

客户   婚姻状况  有效开始日期,有效结束日期,最新版本
客户A,未婚,    1988-01-01,  2014-09-24,    N
客户A,已婚,    2014-09-24,  9999-12-31,    Y

缺点:
当事实表与其关联时,需要根据交易日期判断所在范围进行关联,SQL效率比较差。

解决办法,
使用代理键,并在事实表中添加此字段,但此点会使ETL的处理逻辑变的复杂些。
或者在维度表添加版本号字段,并将此字段冗余到事实表中,这样也可以提高表的关联性能。


若维度表特别庞大,且字段变化特别频繁如何处理。若仍采用上面的方法,每次变化则新增一条记录,则势必维度表过于庞大。


建议的处理策略:

根据变化频率,将字段拆分为不变字段,偶尔发生变化字段,常发生变化字段
三种类型字段形成各自的表,不变字段的主表仍采用自然键作为主键,偶尔发生变化和常发生变化的表采用拉链表处理。
访问变化的字段仍需要判断时间范围进行判断。


或者将发生变化的字段,每个字段都单独摘出来形成一个微型维度,包含自己的关键字。
另外新增关联表,采用拉链表保存这些微型维度与主表的对应关系。 。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics