• DataStage系列教程 (Change Capture)


    Change Capture可以比较具有相同列的数据集的差异,得出一个数据集(After)在另一个数据库(Before)的基础上产生的哪些变化。变化类型如表1:

    变化代码 变化 中文说明
    0 no change 无变化
    1 insert 新增
    2 delete 删除
    3 edit 有变化
    表1 变化种类

    1 JOB示例

    如图1,我们最终做出的JOB会是这个样子。它包含3个序列文件组件data_before、data_after、cmp_result;2个排序组件sort_before、sort_after;一个change capture组件cc。

    JOB从2个结构相同的源文件抽取数据,最终比较出data_after在data_before上产生了哪些改变,然后将改变存入cmp_result。

    image

    图1 JOB示例

    2 组件简介

    2.1 阶段

    阶段选项卡如图2。

    image

    图2 阶段选项卡

     
    2.1.1 Change Mode

    先介绍一下选项里的Change Mode,它有3种模式,官方解释如下:

    All Keys, Explicit Values means that value columns must be defined, but all other columns are key columns unless they are excluded.
    Explicit Keys & Values means that key & value columns must be explicitly defined.
    Explicit Keys, All Values means that key columns must be defined, but all other columns are value columns unless they are excluded.

     

    我的理解如表2:

    模式名称 说明
    All Keys, Explicit Values 明确指定值。
    这时属性中会出现Excluded Keys和Change Values这2个文件夹,我们需要在这2个文件夹添加属性,或者只指定Change Values。
    除了Excluded Keys、Change Values,其他的都是key,用来确定一条记录。
    Explicit Keys & Values 明确指定键和值。
    我们需要在Change Keys和Change Values文件夹中添加属性。
    Explicit Keys, All Values 明确指定键。
    需要在Excluded Values和Change Keys填写属性,或者只指定Change Keys。

    表2 Change Mode说明

    说明:我一般都是采用Explicit Keys, All Values,然后指定数据集的主键,如图2。其他模式您可以自己尝试。

     

    2.2 其他选项

    接下来介绍选项。用来确定比对结果输出和是否需要在日志中记录统计信息。

    属性 说明
    drop output for copy 没有发生变化的记录是否要从输出中删除。
    True:删除,即不输出;False:输出。
    drop output for delete 在data_after中删除的记录是否要从输出中删除。
    即data_after中没有,data_before中有的记录。
    drop output for edit data_after和data_before不一致的记录是否要从输出中删除。
    drop output for insert data_after中有而data_before中没有的记录。
    log statistics 是否在日志中输出统计信息。日志会记录数据集的记录数,新增、删除的记录数等。

    3 结果展示

    3.1 data_before

    code    name    salary  entryDate
    001     hong    100     2014-01-12
    002     bai     105     2014-01-22
    003     wang    110     2014-02-01
    004     lan     102     2014-02-02

    3.2 data_after

    code    name    salary  entryDate
    001     hong    120     2014-01-12
    002     bai     105     2014-01-22
    004     lan     102     2014-02-02
    005     hei     103     2014-03-02

    3.3 cmp_result

    001     hong    120     2014-01-12      3
    003     wang    110     2014-02-01      2
    005     hei     103     2014-03-02      1

    4 附JOB导出文件

    点击下载

  • 相关阅读:
    Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
    Mac下安装配置Python2和Python3并相互切换使用
    精通Python自动化脚本
    idea之Git
    python面向对象之:细分类的组成成员
    new string("abc")创建了几个对象
    进程和线程的主要区别
    Leetcode 572 另一个树的子树
    Leetcode 二叉树的坡度
    Leetcode 559 N叉树的最大深度
  • 原文地址:https://www.cnblogs.com/BlueBreeze/p/datastage_series-Change_Capture.html
Copyright © 2020-2023  润新知