缓慢变化维
定义:维度表里面的数据并非是始终不变的,总会随着时间发生变化;
比如我们有一张我们公司的商品类别维度表,记录了商品类别的一些基本信息,那么随着时间的变化商品类别可能会在发生改变,假如猪肉之前属于肉禽类别,现将猪肉更改为属于零食类别针对这种变化,业务系统会直接将业务数据库中数据抽取过来直接覆盖,而不会考虑历史变化,不过在数据仓库中由于有时我们需要进行历史变化分析,或者防止商品品类统计数据记录错误,所以需要对这种变化进行相应的处理。
处理办法
第一种方法,直接在将原来维度覆盖,无法追溯历史变化:
1) 更新前:
emp_rid(代理键) emp_id(自然键) emp_name position
101212 12345 Jack Developer
更新后:
emp_rid(代理键) emp_id(自然键) emp_name position
101212 12345 Jack Manager
第二种方法,不修改原有的数据,重新产生一条新的记录,这样就可以追溯所有的历史记录(拉链表):
拉链表的制作流程
1) 更新前:
emp_rid(代理键) emp_id(自然键) emp_name position start_date end_date
101212 12345 Jack Developer 2010-2-5 2012-6-12
更新后:
emp_rid(代理键) emp_id(自然键) emp_name position start_date end_date
201245 12345 Jack Manager 2012-6-12 9999-99-99
第三种方法,直接在原来维度的基础上进行更新,不会产生新的记录但是只会记录上一次的历史记录:
1) 更新前:
emp_rid(代理键) emp_id(自然键) emp_name position old_position
101212 12345 Jack Developer null
更新后:
emp_rid(代理键) emp_id(自然键) emp_name position old_position
101212 12345 Jack Manager Developer