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。
图1 JOB示例
2 组件简介
2.1 阶段
阶段选项卡如图2。
图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