- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Datastage实现拉链算法
环境:Red Hat Linux AS 4 + Oracle DB 10g + Datastage EE 7.5.2
首先,还是先了解一下数据仓库中提到的拉链表。拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。拉链表的好处就是避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化维的一种常见方式。
如下设计了一个拉链表t_chain,必然包含的字段有标识字段(NAME),开始日期,结束日期,信息变更字段(STAT)。
(NAME)?? (START_DATE)??????? (END_DT)???? ?? (STAT)client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? H在家client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? A小学client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? B初中client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? C高中client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? D大学client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? E公司client1 ?? ?? ???? ?? ?? ?? ???? ?? ?? H退休在家
假设客户的状态数据每天是一个全量表t_all,那么哪些数据需要关注呢?第一类,t_all中有,而t_chain中没有的数据,例如,以上所示client2出现了;第二类,t_all和t_chain中都有,但是信息变更了,例如,以上所示client1退休后被返聘又开始工作了;第三类,t_all中没有,而t_chain中有,例如,client去世了,或者某客户从系统中注销了。如果采用SQL完成拉链表,参见/bbs/archiver/tid-23239.html
现在我们用datastage来实现拉链算法:Datastage中的Change Capture Stage能够帮助我们来实现拉链算法。Change Capture Stage功能特点:Change Capture Stage两个输入,分别标记为before link 及 after link。输出的数据表示before link和after link的区别,??? 我们称作change set。Change Capture Stage可以和Change Apply Stage配合使用来计算after set。
key及value的说明key值是比较的关键值,value是当key值相同是作进一步比较用的。change mode项说明:All keys,Explicit Values??????? 需要指定value,其余字段为keyExplicit KeysValues?????????? key及value都需要指定Explicit Keys,All Values??????? 需要指定key,其余的字段为value输出策略说明Drop Output For Copy????????? False:保留before及afte link中key值相同的行???????????????????????????????????????????????? True:删除before及afte link中key值相同的行Drop Output For Delete???????? False:保留before link中但是after link中没的key值所在的行??????????????????????????????????????????????? True:删除before link中但是afte link中没的key值所在的行Drop Output For Edit??????????? False:保留key值相同,value不同的行??????????????????????????????????????????????? True:删除key值相同,value不同的行Drop Output For Insert????????? False:保留before link中没但afte link中的key值所
文档评论(0)