SCD Type2 in ODI
缓慢变化维(Slowly changing Dimensions)指的是维表中的维度字段值会随着时间或业务调整,而在后续的分析中,历史数据仍然要使用旧的维度值,新的数据会使用当前维度值。在数据仓库建设过程中,ODI 提供有专门的SCD 集成模块,更方便的对维表进行更新。在ODI 12c中实现缓慢变化维SCD2的例子如下。
一、创建测试表格
创建源表,并插入数据
View Code
插入测试数据
View Code
创建目标表
View Code
二、逆向工程、创建接口
模型上新建关键字PK_EMP,否则会报错:未指定关键字,无法进行流控制
新建接口SCD2,拖拽两个数据存储,自动映射如下
START_DATE= sysdate
END_DATE=to_date('29990101', 'YYYYMMDD')
CURRENT_FLAG= 0 (0:old record, 1: Latest record)
指定LKM
三、渐变维度配置
修改目标表为渐变维度
执行目标表属性的SCD行为:
自然关键字、代理关键字、更改时覆盖、更改时添加、开始时间戳、结束时间戳、当前记录标记
指定目标表的集成知识模块
四、测试
第一次运行接口,目标表中数据
4.1、更新时添加字段的测试
更新源表记录的SAL字段(更新时添加行)
UPDATE "ODI_SRC"."EMP_SCD2_SRC" SET SAL=3000 WHERE EMPNO='7369';
重新运行接口,发现EMPNO=7369的多了一行
4.2 更新时覆盖字段的测试
更新MGR字段(更新时覆盖)
UPDATE "ODI_SRC"."EMP_SCD2_SRC" SET MGR=7566 WHERE EMPNO='7369';
不会新增记录