数据仓库缓慢变化维度应对策略
程序员文章站
2022-03-26 10:44:41
...
缓慢变化维
建议仅考虑有分析价值的字段,采用策略记录其变化,否者直接进行UPDATE。
采用拉链表
添加增加有效开始时间,有效结束时间,最新版本标示字段。
比如客户表的婚姻状况发生变化,会新增一条记录,两条记录如下:
客户 婚姻状况 有效开始日期,有效结束日期,最新版本
客户A,未婚, 1988-01-01, 2014-09-24,
N
客户A,已婚, 2014-09-24, 9999-12-31, Y
缺点:
当事实表与其关联时,需要根据交易日期判断所在范围进行关联,SQL效率比较差。
解决办法,
使用代理键,并在事实表中添加此字段,但此点会使ETL的处理逻辑变的复杂些。
或者在维度表添加版本号字段,并将此字段冗余到事实表中,这样也可以提高表的关联性能。
若维度表特别庞大,且字段变化特别频繁如何处理。若仍采用上面的方法,每次变化则新增一条记录,则势必维度表过于庞大。
建议的处理策略:
根据变化频率,将字段拆分为不变字段,偶尔发生变化字段,常发生变化字段
三种类型字段形成各自的表,不变字段的主表仍采用自然键作为主键,偶尔发生变化和常发生变化的表采用拉链表处理。
访问变化的字段仍需要判断时间范围进行判断。
或者将发生变化的字段,每个字段都单独摘出来形成一个微型维度,包含自己的关键字。
另外新增关联表,采用拉链表保存这些微型维度与主表的对应关系。
。
推荐阅读