ODI 11g & 12c中缓慢变化维(SCD)的处理机制

 缓慢变化维(Slowly changing Dimensions)指的是维表中的维度字段值会随着时间或业务调整,而在后续的分析中,历史数据仍然要使用旧的维度值,新的数据会使用当前维度值。在数据仓库建设过程中,ODI提供有专门的SCD 集成模块,更方便的对维表进行更新。

 

源和目标模型定义

本示例基于src_customer表,下面是目标维表的定义:

 

在上面的目标维表中,先说明一下相关的字段:

Key,代理键:在生成的结果维表中唯一标识,一般使用Sequence标识;

Current_ind,是否有效:当前维表中该记录是否处于有效状态;

H_BID,自然主键:原有维表中的主键字段;

C_mstat,维度变更字段:维表中的关键维值,即与其它事实表关联的字段,该值与维度分析有直接关系;

其它附属字段(h-addr, h_zip, c_bid, c_tele):其它附属信息,用于说明该记录的其它属性字段;

C_eff,开始时间:关键维度值有效时间

C_exp,结束时间:关键维度值失次时间

在每个字段的属性窗口中,可以设置该字段对应的类型:

 

上图是针对key字段的设置。

维度值状态指示器字段的设置:

 

针对其它属性字段,选择有源端有更新时就覆盖目标值。

 

原有主键字段:

 

维度值起始时间:

 

维度关键值:

 

源端维表定义:

 

该表的字段数比目标表的字段数少。

 

维表加载更新接口定义

如果字段不能自动匹配,需要手工映射。针对源端没有的字段,需要人工指定相应的值,如下图所示:

 

在流控制中,需要选择正确的IKM

 

测试

原始数据:

 

第一次执行接口之后目标维表的数据:

 

在源端把cust_marstatmarried改为Single之后,再次执行接口,目标维表的数据如下:

 

可以看到,状态指示字段已经有变化,起止时间也不同,最后,关键维字段的值已经保留了历史状态。

至此,维表的更新完成。

 

12c11g的优点

12c中,针对SCD的设置做了如下改进:

你可能感兴趣的:(11g)