KDT#54 再谈缓慢变化维(一)
在数据仓库系统中,维度属性的变化是不可避免的,通常我们会用缓慢变化维的三类处理策略来解决这个问题。也就是
类型一,覆盖原属性。
类型二,添加新的维度行。
类型三,添加新的维度列。
当维度的属性发生变化时,客户除了要求能用当前值对历史事实信息进行分析外,经常会要求能以历史上的属性分类信息对事实进行分析。随着大家对商业智能的了解和期望程度,这种分析需求变得越来越多。二十年前(Kimball的二十年前),大家对用当前属性分析历史事实数据就能很满意了,但是现在我们需要用类型二的缓慢变化维策略对维度表的历史信息进行保存,以便提供对历史情况的分析。
在KDT#15中,我们讨论了组合使用缓慢变化维策略的方法。组合使用缓慢变化维的策略虽然实现起来麻烦一些,但是能提供较灵活的分析方式。
从物理上来说,组合使用缓慢变化维的策略是在一张维度表中增加一个字段,与原有字段一起分别保留历史信息和当前信息。我们还有一种类似的方案可以选择,就是将所有最新的属性建立一张支架维度表(outrigger)。该支架维度表中只保留维度的最新信息,用自然键做主键,不使用代理键。当维度的属性发生变化时,直接更新这个维度表中的数据。原来的维度表保留维度的历史信息,为了方便使用,可以在两个表上建立视图。当然,当性能很差时,这种方案是不可选的。