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

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

 

源和目标模型定义

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

 

 

 

 

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

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

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

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

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

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

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

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

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

 

 

 

 

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

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

 

 

 

 

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

 

 

 

 

原有主键字段:

 

 

 

 

维度值起始时间:

 

 

 

 

维度关键值:

 

 

 

 

源端维表定义:

 

 

 

 

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

 

维表加载更新接口定义

 

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

 

 

 

 

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

 

 

 

 

测试

原始数据:

 

 

 

 

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

 

 

 

 

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

 

 

 

 

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

至此,维表的更新完成。

 

12c比11g的优点

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

 

 

 

 

 

 

可直接在目标维表的字段上指定各字段的类型,而不用去每个字段的属性页上单独编辑,提升设置效率,也更直观的对维表进行管理。

 

posted @ 2017-06-15 13:45  张玉宝  阅读(272)  评论(0编辑  收藏  举报
友情链接:回力鞋 | 中老年高档女装 | 武汉英语学校 | 托福网课 | 托福培训