1. 概述
1.1 版本
FineBI 版本 | 功能變動 |
---|---|
6.0 | 權限繼承下的左右合併邏輯優化 注:該邏輯優化僅針對抽取的、開啟權限繼承的、包含左右合併步驟的自助資料集。 |
6.0.5 |
|
1.2 應用場景
在實際使用資料的程式中經常會有需要將兩張表聯合在一起形成一張新表使用的情況
假如有這樣兩張資料表:
① Table A:記錄了學生姓名、英語成績
② Table B:記錄了學生姓名、數學成績
如果想在一張表中就看到學生的姓名、數學成績和英語成績,則可以使用「姓名」欄位作為「合併依據」進行左右合併。
不同的合併方式如下所示:
1.3 功能簡介
如果您有 sql 語言基礎,可以將左右合併理解為 sql 中的“join”。
如果您對 Excel 的“vlookup、sumif”更熟悉,推薦您先瀏覽 其他表新增欄 功能。
注:使用者若需要將多流程處理後的資料進行左右合併,可使用 FineDataLink 中的 資料聯動 功能實現。
1.4 直連版本注意事項
直連資料左右合併的兩張表不能來自兩個資料源中(抽數版本可以來自兩個資料源)。
合併後會報錯:[DIRECT-ETL] unsupported data source: databases on different hosts/ports
直連資料下,只有部分資料庫中的表可以和 Excel 表左右合併,詳細請參見:支援與Excel融合分析的資料庫
2. 範例
範例資料:商品資料表.zip
為了分析該商品的銷售額,需要將「商品銷售明細表」中的數量欄位與「商品資訊維度表」中的單價欄位合併到一張表中進行計算。
2.1 建立分析主題並新增資料
1)建立分析主題,並新增資料。點選「本地Excel檔案」上傳「商品銷售明細表」,點選「繼續上傳」可以繼續上傳「商品資訊維度表」,如下圖所示:
注:建議使用者在進行左右合併前,減少表欄位名稱長度,避免出現欄位名稱過長導致儲存失敗問題。
2.2 設定左右合併
1)如下圖,新增左右合併步驟:
2)選擇要左右合併的表「商品資訊維度表」,並勾選該表中要參與左右合併的欄位。如下圖所示:
3)選擇合併方式為「左合併」,並新增合併依據為「商品編號」。如下圖所示:
合併依據欄位必須為同一欄位類型;
若左右兩表中有欄位名一致,系統會將其自動新增為合併依據。使用者可以手動刪除或新增合併依據。
合併方式說明:
合併方式 | 說明 |
---|---|
左合併 | 對應 SQL 語句中的 left join |
右合併 | 對應 SQL 語句中的 right join |
交集合並 | 對應 SQL 語句中的 inner join |
並集合並 | 對應 SQL 語句中的 full join |
2.3 效果查看
兩張表的欄位合併到一張表中。合併依據會合併成一個欄位,只保留合併結果「商品編號」,如下圖所示:
3. 多個合併依據
實現「部門人數」和「銷售額」合併到一張表中,如下圖所示:
無法單獨使用一個欄位作為合併依據,所以需要「部門、地區」欄位共同作為合併依據。多個合併依據的意義即保證左右合併時資料的唯一性,如下圖所示:
4. 建立合併計算欄位
左右合併的優勢在於,我們可以直接對合並依據(兩張表進行匹配的欄位)進行處理後,再進行匹配。
4.1 範例一
若左右兩表的合併依據無法直接合並:
比如:左右兩表的合併依據欄位,它們的欄位類型不一致;
比如:左表的是「南京」,右表是「南京市」,無法自動匹配;
我們就可以使用「建立合併計算」建立一個輔助的合併依據欄位。如下圖所示:
詳細範例可參見:左右合併匹配失敗處理
4.2 範例二
當出現本文第三節,需要使用多個合併依據,例如需要「地區」和「部門」共同作為合併依據的時候,使用者也可以使用「編輯合併計算」來實現。
使用合併計算「地區+部門」作為合併依據即可。
5. 注意事項
5.1 null 值不會互相匹配
左右合併的兩張表合併依據中如果有 null 值,null 之間不會互相匹配。若您需要對它們進行匹配,可以對其指派,比如說可以都指派為“0”後,再重新進行左右合併。
5.2 產生笛卡爾積
若進行左右合併的兩張表,它們的合併依據欄位中有重複項,左右合併後就會產生笛卡爾積,導致資料量膨脹。(比如說以「id」列作為合併依據,左表 id 欄位不唯一,或右表 id 欄位不唯一,進行左右合併後就會產生笛卡爾積)。
系統會自動檢查「合併依據」是否重複,並給出提示,如下圖所示:
為了不影響系統的穩定性,當並集合並後資料量滿足以下情況時系統會主動打斷進行過 N:N 操作的自助資料集的更新:
進行並集合並後資料量超過 1 千萬;
膨脹係數>=5;膨脹係數:MIN (並集合並結果資料量/左表資料,並集合並結果資料量/右表資料)。例如,100w 資料和 500w 資料 N:N 結果為 2000w資料,那麼 N:N 膨脹係數為: 2000w/500w =4
若出現笛卡爾積,更新資訊處會提示使用者是否更新成功:
資料集生成成功:更新時檢查到笛卡爾積,資料膨脹,更新耗時增加,請檢查左右合併步驟中的合併依據列資料是否有重複值。
資料集生成失敗:更新時檢查到笛卡爾積,資料嚴重膨脹,操作中止。請檢查左右合併步驟中的合併依據列資料是否有重複值,請確定重複值不應過多。
若「更新資訊」處提示生成失敗,但使用者依舊要使用 N:N 進行分析,可以透過過濾等手段縮減資料量達到系統不打斷的要求。
5.3 資料欄位要求
資料表的欄位有空格會導致左右合併結果異常,在進行左右合併前,請確定合併資料表欄位中沒有空格。如下圖所示:
5.4 設定預覽介面計算資料
當資料量比較大時,可以在資料集的編輯程式中使用前 5000 行進行計算,使計算更為流暢,如下圖所示: