基于ETL工具实现数据增量抽取方案

浏览: 3251

环境信息:

版本:IBM InfoSphere DataStage V11.3.1

操作系统:linux redhat 6.4

数据库版本:Oracle 11.2.0.4.0


主要内容

本文主要讲解,企业级数据仓库基于ETL工具实现增量加载业务系统数据方案。

数据流程图

Clipboard Image.png

具体数据流程图:

6d156675284a1cb24333aba7ea64746a.png


实现方案

1.数据量相对比较小,100W级别以下。

根据日调度,实现前后两天通过文件对比,获取相应增量数据。

弊端:因为ODS 系统一般是多层存储,需要保证每次日调度执行成功,否则会丢数据。

Clipboard Image.png


2.数据量相对比较大,100W级别以上。

一般业务系统会有自增长ID 列,我们会选择获取增量的时候,增加限制条件,比如SELECT * FROM TABLE_NAME WHERE ID>MAX(ID)

 其中MAX(ID) 为上一次,最大ID值,在利用可以放到一个临时表。

a)在调度时获取maxid.Txt 的数据

Clipboard Image.png


b)在利用Sequence 调度 各层之后,最后触发该作业获取最大ID 存储到maxid.Txt文件中。

Clipboard Image.png

推荐 6
本文由 我是最优雅的杀手,不杀人专杀狗 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

3 个评论

DS可以通过文件对比获取增量数据么?
文章中实现方案的第一个图,就是通过Change Capture控件来对两个scv文件中的字段做比较。【Change Capture 的输出是在After表结构的基础上增加一列Change code,用以表示数据变化的情况(0:Copy 1:Insert 2:Delete 3:Edit)】我们可以只获取对应需要的比如新增的。
所以说还是ETL工具比较好用一些,INFA的CDC,DS的CDC还是有他的可用之处的,oracle手动创建CDC只能针对数据表,文件好像不行。

要回复文章请先登录注册