数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化 。与数据增长较为快速的事实表相比,维度变化相对缓慢。
在一些情况下,保留历史数据没有什么分析价值;而在另一些情况下,保留历史数据将会起到至关重要的作用。在 Kimball 的理论中, 有三种处理缓慢变化维的方式,下面通过简单的实例进行说明。
第一种处理方式 :重写维度值。采用此种方式,不保留历史数据,始终取最新数据。比如,商品所属的类目于 2015 年 11 月 16 日由 类目l 变成 类目 2 ,采用第 一 种处理方式,变化前后的数据记录分别如表 10.4和表 10.5 所示 。
第二种处理方式:插人新的维度行。采用此种方式,保留历史数据,维度值变化前的事实和过去的维度值关联,维度值变化后的事实和当前的维度值关联。同上面的例子,采用第二种处理方式,变化前的数据记录 同表 10.4 ,变化后的数据记录如表 10.6 所示。
第三种处理方式:添加维度列。采用第二种处理方式不能将变化前后记录的事实归一为变化前的维度或者归一为变化后的维度。比如根据业务需求,需要将 l 1 月份的交易金额全部统计到类目 2 上,采用第二种处理方式无法实现。针对此问题,采用第三种处理方式,保留历史数据,可以使用任何一个属性列。同上面的例子,采用第三种处理方式,变化前后的数据记录分别如表 10.7 和表 10 .8 所示。通过变化后的商品表和订单表关联,可以根据不同的业务需求,将 11月份的交易金额全统计到类目 2 或类目 l 上。
欢迎关注微信公众号