在数据仓库建模中我们常常会涉及到缓慢变化维(Slowly Changing Dimensions 简称SCD)的设计, 缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,是随着时间的流失做缓慢的变化,所以处理这种历史的变化的维度我们称之为处理缓慢变化维。特别是在数据仓库设计中,我们的重点就是设计维度表跟事实表。所以维度表设计的好坏影响着整个数据仓库的搭建和后续报表展现的灵活性和完整性。
缓慢变化维度一般有以下几种实现方式:
1、第一种方式(TYPE 1)是新值直接覆盖原值即改写属性值,这种方法最简单,但是没有历史记录,无法分析历史变化信息。
e.g.
修改前->
用户 ID 用户姓名 出生日期 住址
1001 张三 1987-01-01 北京
修改后->
用户 ID 用户姓名 出生日期 住址
1001 张三 1987-01-01 上海
2、第二种方式(TYPE 2)是添加维度行。可以创建一个代理健,并设置成主键,这样自然健可以和原维度和新维度的都保持关联,后续的关联查询的取舍就根据需求的定义。
e.g.
修改前->
用户 ID