Change Capture可以比較具有相同列的數據集的差異,得出一個數據集(After)在另一個數據庫(Before)的基礎上產生的哪些變化。變化類型如表1:
| 變化代碼 | 變化 | 中文說明 |
| 0 | no change | 無變化 |
| 1 | insert | 新增 |
| 2 | delete | 刪除 |
| 3 | edit | 有變化 |
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


