• kettle入门(七) 之kettle增量方案(一)全量比对取增量-依据唯一标示


    
    
    引:
    ods有个project表来自于上游系统,数据量不大 十几万,下游系统须要此数据,而且须要每天提供截止当天的增量数据 要求每条数据给出数据变化时间及标示,即数据若是插入 有插入时间和插入标示 若是改动 有改动时间和改动标示 若是删除需逻辑删除、有删除标示且有删除时间



    解决:
    kettle的转换ktr里有一个图元叫做合并记录。能够把两个表输入分为源和目的依据唯一标示 进行全量比对。由此。我们得到增量的数据流,再写入到RDBMS里,即能够实现该需求。实现功能的ktr例如以下图:


    20150429151510781 (795×546)

    1 输入源 合并记录

    上图。最左側是两个表输入,上面一个cpmis 是上游系统 以下一个被 merge rows挡住了。名字是odso


    cpmis

    SELECT  
    ITEMID,
    ITEMCODE,
    ITEMPLANCODE,
    ITEMNAME,
    DEMANDID,
    ITEMPROPERTY,
    COMPANYID,
    MANAGELEVELID,
    SPECIALSMALLTYPEID,
    PLANTYPEID,
    CONSTRUCTPROPERTYID,
    AREAID,
    ASSISTANTTYPEID,
    CONSTRUCTTYPEID,
    FEEDEPARTMENTID,
    ..... FROM PROJECT_AH.ITEMINFO order by ITEMID


    odso


    SELECT  
    ITEMID,
    ITEMCODE,
    ITEMPLANCODE,
    ITEMNAME,
    DEMANDID,
    ITEMPROPERTY,
    COMPANYID,
    MANAGELEVELID,
    SPECIALSMALLTYPEID,
    PLANTYPEID,
    CONSTRUCTPROPERTYID,
    AREAID,
    ASSISTANTTYPEID,
    CONSTRUCTTYPEID,
    FEEDEPARTMENTID,
    ..... FROM odso.ITEMINFO order by ITEMID


    2 值映射

    例如以下图, 将输入源与目的源的每一个字段数据依据唯一字段比較后 到值映射图元,使用字段名 为起的后面用到的一个变量名(可随意起)。源值列为系统默认
    1 代表输入源与目标源比較后删除的数据标志 2 是输入源新增 3 是输入源更新 4是不变 目标值 是自己起的名字 能够依据须要不变 或改动


    3 第一次过滤无效记录

    例如以下图,条件 flagfield is not null (后面没显示完),若条件成立发送给下一步zh_check_date,若不成立发送给空操作。


    4 新增数据推断add2

    例如以下图,zh_check_date 为获取当前的系统时间变量。

    add2 图元打开为 画圈的图 左側的地方 ,条件 flagfield  = add_rec ,若成立及发送数据到中间画圈的add图元,若不成立则 发送数据到mod_del图元 (矩形红框) 如果为true数据到 add图元,打开 即是下图右側 部分 填写须要插入的数据字段 再到insert图元 ,就可以把输入源比目标源多的新数据更新到目标表来 而且加上时间戳。



    5 改动或删除 mod_rec

    例如以下图,如果数据从add2发送而来。 打开矩形框 mod_del 条件flagfield = mod_rec 若true 则发送到 update mapping 若flase 则发送到delete mappinig 。如果是更新,则右側 的查询keyword 是 更新的比較字段 即是一開始合并记录的比較字段 ,更新字段就是 除了比較字段之外的其它字段。这样数据就能够从 输入源更新到目标源。



    6 删除数据 delete mapping 

    例如以下图。如果数据流到了 delete mapping 。则 仅仅须要依据比較字段把 目标表的时间戳更新 和 状态更新为del_rec就可以,下图zh_check_type 为flag_field的值


    7 数据结果 

    zh_check_type 和check_date已更新为

  • 相关阅读:
    js基础之变量作用域和es6解构赋值
    js基础之函数的定义和调用
    js基础之引用数据类型
    js基础之基本数据类型
    js基础之变量声明提升
    浏览器渲染页面
    flex布局
    web前端性能优化
    动态修改docker容器环境变量env
    蓝鲸前端框架
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6818736.html
Copyright © 2020-2023  润新知