zoukankan      html  css  js  c++  java
  • ODI基于源表时间戳字段获取增量数据

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

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

     

    创建变量

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

    clip_image001

    基于文本类型定义变量。

    clip_image002

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

    clip_image004

     

    创建mapping

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

    clip_image006

    主表的过滤条件设置

     

    clip_image008

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

    clip_image010

     

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

    clip_image012

     

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

    创建程序包

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

    clip_image014

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

    clip_image016

     

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

    clip_image018

    第二个变量为刷新变量

    clip_image020

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

    定时调度

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

    clip_image021

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

    clip_image022

    设置场景开始运行的时间

    clip_image024

     

    设置场景循环的间隔

     

    clip_image026

     

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

    clip_image028

     

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

  • 相关阅读:
    CSS Hack大全-教你如何区分出IE6-IE10、FireFox、Chrome、Opera
    详解HTML5中的<aside>元素与<article>元素
    jQuery基于ajax实现星星评论代码
    JS打字效果的动态菜单代码分享
    javascript中alert()与console.log()的区别
    jquery ajax对特殊字符进行转义防止js注入使用示例
    JQuery中each()的使用方法说明
    前端图片延迟加载详细讲解
    表数据查询例题
    shell-4.bash的变量:用户自定义变量
  • 原文地址:https://www.cnblogs.com/margiex/p/9128777.html
Copyright © 2011-2022 走看看