博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ODI基于源表时间戳字段获取增量数据
阅读量:6195 次
发布时间:2019-06-21

本文共 780 字,大约阅读时间需要 2 分钟。

实现目标:通过ODI获取一个没有时间戳的子表(qb_bw)的增量数据,而主表(qb_tb)有一个rksj入库时间,且主表和子表之间通过ID关联。目标表名是qb_bw1.

设计原理:通过在ODImapping中关联主表和子表,然后在主表的rksj上设置时间过滤,最后将子表的字段映射到目标表中。在此设计中,需要有一个变量,此变量在第一次运行时,使用一个初始值,这样第一次运行会获取此初始值后的所有源数据到目标表,然后根据目标表的rksj更新此变量值,从而得到目标表上最大的时间戳,再基于此时间点去获取源表的记录,从而实现每次运行都可以得到新增的数据。

 

创建变量

新建一个变量保存目标表入库时间的最大值。

基于文本类型定义变量。

使用SQL获取目标表时间字段的最大值。

 

创建mapping

主表的数据基于时间字段过滤,再跟子表关联后加载子表的数据到目标表。

主表的过滤条件设置

 

主表和子表的关联条件设置

 

目标表上新增的入库时间字段,从源端主表获取。

 

以上映射建立完成之后,可以试运行,确保逻辑是正确的,理论上会基于变量的初始值获取源端的数据加载到目标表。即获取rksj>’2018-05-11’的所有数据加载到目标表。

创建程序包

再建立相关的数据处理流程,即循环获取增量。新建一个程序包

拖拉刚才创建的变量两次,以及刚才的mapping.

 

第一个变量上设置为声明变量

第二个变量为刷新变量

以上程序包已经可以手工执行,每次执行获取相应的增量数据到目标表。

定时调度

保存程序包,并生成场景。

在生成的场景上,新建一个调度(前提是后台的agent在正常运行)

设置场景开始运行的时间

 

设置场景循环的间隔

 

 

agent配置处,更新调度信息。

 

现在即可在查看日志处,看到指定间隔的时间之后,有该程序包处理的日志,以及每次运行后获取的增量记录数等信息。

转载地址:http://nhuca.baihongyu.com/

你可能感兴趣的文章
JavaScript 数据类型
查看>>
redhat配置caffe
查看>>
大数据学习(2)HDFS文件管理
查看>>
Java并发编程实践读书笔记(2)多线程基础组件
查看>>
洛谷P2668 斗地主
查看>>
猜数字小游戏,很naive......
查看>>
今日工作总结和心情
查看>>
ubutun下安装jenkins
查看>>
JS引用类型之——RegExp
查看>>
linux的cpu软中断问题引发的gc cr block lost高等待
查看>>
大韩航空如何成为一流航空——等级文化与称呼的改变
查看>>
标准sql执行顺序
查看>>
[转载]C++引用浅谈
查看>>
动态生成服务器控件
查看>>
canvas下雨特效
查看>>
jquery的回调对象Callbacks详解
查看>>
7.06 生成累计和
查看>>
*Algs4-1.5.25随机网格的倍率测试-(未读懂题)
查看>>
高级位操作技巧
查看>>
Python总纲路线
查看>>