KDT#8 使用类型二的缓慢变化维
通常应对缓慢变化维的解决策略有三种类型,分别是类型一直接更新、类型二增加行、类型三增加列。使用类型二时,当维度表的数据发生变化时,我们会增加一条新记录到维度表中,并用代理键作为主键。本日志要讲的就是使用类型二的缓慢变化维策略可以对历史数据提供逻辑上的分区。
使用类型二的策略需要代理键的支持,以产品维度为例,当产品描述变化时,需要增加一条新的记录,用自增的代理键和变化前的记录相区别。而产品编码不会改变,用产品编码分组可以确定和变化前的记录是同一个产品。在事实表中,今天前的事实记录都用的是变化前的代理键,而从今天及以后的事实记录都用变化后的代理键,直到下一次变化生成下一个代理键。
这样,老的产品维度和事实表中的老记录相关联,新的产品维度和事实表中的新记录相关联。也就是说,类型二的缓慢变化维策略对历史数据进行了很好的逻辑分区。
需要说明的是,采用类型二的策略时,也要有一些字段是不需要变化的,比如产品编码、产品名称等,对这些字段分组可以横跨事实表的全部历史记录。
在类型二的缓慢变化维策略上加上时间戳可以使其功能更强大,但是时间戳对历史数据进行逻辑分区来说并没有太大的作用。