1. 概述
1.1 版本
| FineDataLink 版本 | 功能变更 |
|---|---|
| 3.1 | 「数据转换」节点新增算子「数据关联」 |
| 4.2.10.1 | 关联配置中新增「高级配置>输出字段」设置项,支持选择数据关联后输出的字段 |
1.2 應用場景
使用者兩張資料表在不同的資料庫中,希望能夠將兩張不同來源庫的表進行聯動生成新表。
1.3 功能簡介
「資料聯動」算子可實現多表跨庫聯動的場景。
聯動方式支援四種。分別如下:
1)左連結(LEFT JOIN):也稱為左合併。
以左邊的表為基礎,將右邊的表中與之匹配的資料行加入結果集,如果右邊的表中沒有匹配的資料,則用 null 填充相應的列。
2)右連結(RIGHT JOIN):也稱為右合併。
以右邊的表為基礎,將左邊的表中與之匹配的資料行加入結果集,如果左邊的表中沒有匹配的資料,則用 null 填充相應的列。
3)內連結(INNER JOIN):取交集。
4)全外連結(FULL OUTER JOIN):取並集。

2. 操作步驟
2.1 準備待聯動表資料
「資料聯動」算子支援多表跨庫聯動。使用者可準備 2 張及以上表資料,進行聯動操作。
本文範例中,準備兩張表資料,進行聯動。
範例表資料下載:english.xls、math.xls
1)英語成績表 english 資料如下圖所示:

2)數學成績表 math 資料如下圖所示:

現希望將 english 表左聯動 math 表。
2.2 讀取待聯動表資料
2.2.1 步驟
1)建立定時任務,拖入「資料轉換」節點,進入「資料轉換」節點。
2)拖入「DB表輸入」算子,讀取 english 表資料。如下圖所示:

3)可為該算子設定備註,備註讀取的哪張表資料,便於之後任務維運與查看。如下圖所示:

4)同理,再拖入一個「DB表輸入」算子,讀取 math 表資料,並備註讀取的哪張表資料。如下圖所示:

2.2.2 注意點
「DB表輸入」算子中,預設抽取前 5000 行表資料進行後續計算;因此,後續的「資料聯動」算子中聯動表資料時,只會取前 5000 行資料進行聯動。導致使用者在「資料聯動」算子中查看聯動效果時,可能出現聯動效果不準確的問題。但任務實際運作時,是會使用全量資料做聯動操作的。
若使用者希望在「資料聯動」算子中查看聯動效果時,結果準確,可在「DB表輸入」算子的「樣本設定」按鈕中,讀取全量資料。
詳情請參見:定时任务数据量说明

2.3 設定聯動
2.3.1 设置关联
1)拖入「資料聯動」算子,連結方式選擇左連結,連結欄位選擇姓名。如下圖所示:

需注意:
若聯動兩張表資料,左表、右表均為可選項;若聯動兩張以上表資料,從第二次聯動開始,左表不再是可選項,而是預設為上一步的連結結果,右表始終為可選項。

可以選擇多個「連結欄位」,多個「連結欄位」為且的關係。
遇到同名欄位,欄位名後綴自動加1,格式為:column1、column2、column3。

若連結方式選擇左連結/右連結時,請確認好左表和右表是否正確(A表左聯動B表,與B表左聯動A表,聯動邏輯是不同的)。
2)點選「資料預覽」,效果如下圖所示:

2.3.2 高级配置
4.2.10.1 及之后版本,新增「高级配置>输出字段」设置项,未选择时默认输出所有字段;选择字段后,则输出已选择的字段。
4.2.10.1 之前版本,可在输出数据时,取消姓名1列的映射。
在本文示例中,设置关联后,有两个 姓名 字段,点击「选部分字段」,可以选择输出其中一个姓名字段。如下图所示:

需注意:
使用者若想刪除姓名1列,可在資料匯出時,取消姓名1列的映射(參考本文 2.4 節內容);或者後接一個「欄位設定」算子(該算子也支援修改欄位類型),刪除姓名1列。
2.4 匯出資料
1)拖入「DB表匯出」算子,將聯動後的資料匯出,取消姓名1列的映射。如下圖所示:

2)寫入方式選擇「追加寫入資料」。
2.5 效果查看
1)任務運作成功後,日誌如下圖所示:

資料庫資料如下圖所示:

2)點選「發佈」按鈕可將任務發佈到 生產模式 。如下圖所示:

