1. 概述
数据比对功能说明 文檔中介紹了「資料比對」算子的功能,本文以一個簡單範例介紹該算子的使用。
2. 範例
範例demo詳情參見:https://demo.finedatalink.com/ 「資料轉換-資料比對-複本」
2.1 場景模擬
範例資料下載:fsale.xls、fsalecopy.xls
需要定期將 fsale 表中的資料同步到 fsalecopy 表中。
fsalecopy 表中的資料如下圖所示:
現在 fsale 表中刪除了「甘蔗」和「凍梨」的資料,增加了「葡萄」的資料,更新了「菠蘿」的資料。希望將最新資料同步到 fsalecopy 表中去。
2.2 設定來源表和目標表
本節取出來源表和目標表的資料,方便後續在「資料比對」算子中透過比對標記出增刪改的資料。
需注意的是,2 個輸入/計算算子誰在位置上方,即為來源表。因此,本文範例中取出 fsale 表資料的算子位置在上方,使用 fsale 表資料比對 fsalecopy 表資料。
2.2.1 建立任務
建立一個定時任務,將一個「資料轉換」節點拖到設計介面。如下圖所示:
2.2.2 設定來源表
1)點選「資料轉換」節點,將一個「DB表輸入」算子拖到資料轉換的設計介面,在「節點資訊」Tab 下為其重新命名為「來源表」。如下圖所示:
2)如下圖設定資料來源,SQL 語句取出 fsale 表中所有資料。
2.2.3 設定目標表
重新整理增一個「DB表輸入」算子,重新命名為「目標表」。SQL 語句取出 fsalecopy 表中所有資料。如下圖所示:
2.3 設定資料比對
1)新增一個「資料比對」算子,並使用線條將它上游的兩個「DB表輸入」算子相連。如下圖所示:
2)「資料比對」算子中,設定邏輯主鍵、比對欄位即可。如下圖所示:
各設定項介紹如下表所示:
設定項 | 說明 | 本文範例 |
---|---|---|
比對源 | 自動生成 | - |
邏輯主鍵 | 用於在兩張表中識別同一筆資料,即透過「邏輯主鍵」將來源表和目標表的資料對應起來,所以「邏輯主鍵」的值不建議為空或者相同 | ID |
比對欄位 | 用於對比兩張表中該欄位的差異,基於比較結果會自動生成標記列 fdl_comparison_type ,該列可以在「DB表匯出」算子的「欄位映射」中刪除 若某個欄位被設定為比對欄位:可以識別出該欄位對應資料的新增、更新、刪除 若某個欄位沒有被設定為比對欄位:能識別出該欄位的增加和刪除,但這個欄位若存在更新,將不能被識別 | 本文範例中,變化的資料欄為 sales 列,所以比對欄位設定為 sales |
標識關係 | 標記列 fdl_comparison_type 的值,用於標記兩張表中同一個欄位的差異。預設值為:Identical(相同)、Changed(更新)、Added(新增)、Removed(刪除),可以自訂標識關係值 | 不做修改,預設即可 |
比對表傳回欄位 | 1)可選項為比對表的所有欄位,一般情況下預設為空,無需設定 2)當「資料比對」算子連結的比對表算子類型為 簡道雲輸入 時,需要設定比對表傳回欄位的值為_id 使用場景請參見:簡道雲匯出 | 無需設定 |
「資料預覽」Tab 頁如下圖所示:
2.4 設定 DB 表匯出
1)新增「DB表匯出」算子,使用連結線與「資料比對」算子相連。
2)設定「DB表匯出」算子,最新資料存到目標表 fsalecopy 中,欄位映射選擇同名映射,刪除目標表欄位 fdl_comparison_type,如下圖所示:
3)點選「寫入方式」,寫入方式選擇「插入/更新/刪除資料」,寫入方式選擇「物理刪除」,邏輯主鍵選擇 ID ,標識欄位選擇 fdl_comparison_type ,標識值需要與「資料比對」算子的「標識關係」值一一對應。。如下圖所示:
4)點選右上角「儲存」按鈕。
2.5 運作任務
點選右上角「運作」,日誌出現執行成功資訊表示任務成功運作。如下圖所示:
可以看到 fsalecopy 表與 fsale 表資料保持一致。如下圖所示: