聯結資料
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
聯結兩個資料集
類別: 資料轉換/操作
模組概觀
本文描述如何在機器學習 Studio (傳統) 中使用聯結資料模組,以使用資料庫樣式的聯結作業來合併兩個資料集。
若要在兩個資料集上執行聯結,它們必須與 單一 索引鍵資料行相關聯。 不支援複合索引鍵。
如何設定聯結資料
在機器學習 Studio (傳統) 中,新增您想要合併的資料集,然後將聯結資料模組拖曳至您的實驗中。
您可以在 [ 資料轉換 ] 類別中的 [ 操作] 下找到此模組。
連線資料集加入至聯結資料模組。
聯結資料模組不支援右外部聯結,因此,如果您想要確保特定資料集的資料列包含在輸出中,該資料集必須位於 lefthand 輸入上。
按一下 [ 啟動資料行選取器 ],為左邊輸入的資料集選擇單一索引鍵資料行。
按一下 [ 啟動資料行選取器 ],針對右邊輸入的資料集選擇單一索引鍵資料行。
如果您要聯結文字資料行,而且想要確保聯結保留區分大小寫,請選取 [ 符合案例 ] 選項。
例如,如果您選取此選項,
A1000
則會被視為與不同的索引鍵值a1000
。如果您取消選取此選項,則 不 會強制執行區分大小寫,而且
A1000
會視為與相同a1000
。您可以使用 [聯結類型] 下拉式清單來指定資料集的組合方式。 類型:
內部聯結: 內部聯結 是典型的聯結作業。 只有當索引鍵資料行的值符合時,它才會傳回合併的資料列。
左方外部聯結:左方外部聯結會從左側資料表中傳回所有資料列的聯結資料列。 當左資料表中的資料列沒有與右資料表中相符的資料列時,傳回的資料列會包含右資料表中所有資料行的遺漏值,除非您指定遺漏值的取代值。
完整外部聯結:完全外部聯結會傳回左側資料表 (table1) 和右邊資料表 (table2) 中的所有資料列。
針對左側資料表中沒有相符資料列的每個資料列,聯結結果會包含右邊資料表中包含遺漏值的資料列。
針對右邊資料表中沒有相符資料列的每個資料列,聯結結果會包含一個資料列,其中包含左側資料表中所有資料行的遺漏值。
左方半聯結:左方半聯結只有在索引鍵資料行的值相符時,才會傳回左側資料表中的值。
針對選項,請 在聯結的資料表中保持正確的索引鍵資料行:
- 取消選取此選項,以取得結果中的單一索引鍵資料行。
- 保留選取的選項,以從這兩個輸入資料表中查看金鑰。
執行實驗,或選取 [聯結資料] 模組和選取的 [執行],以執行聯結。
若要查看結果,請以滑鼠右鍵按一下 聯結資料 模組,選取 [ 結果資料集],然後按一下 [ 視覺化]。
範例
您可以在 Azure AI 資源庫中看到此模組的使用範例:
Breast 癌症偵測: 聯結資料 可用來將正面定型案例與負定型案例合併在調整案例的比例之後。
電影建議:已聯結兩個資料集,因此我們可以呈現建議的電影標題,而不是電影識別碼。
技術說明
本節說明執行詳細資料,以及一些常見問題的解答。
限制
結合的資料集不能有兩個相同名稱的資料行。 如果左邊和右邊資料集有任何重複的資料行名稱,則會將數值尾碼附加到正確資料集的資料行名稱,使其成為唯一的。
例如,如果兩個資料集都有一個名為 Month 的資料行,則左邊資料集的資料行會維持原狀,而右邊資料集的資料行會重新命名為 Month (1) 。
用於比較索引鍵值的演算法是強制雜湊。
只要輸入資料集的相對應資料行是類別,聯結的資料集的每個資料行就會保留類別類型。
在左方外部聯結中,如果有任何遺漏值,則會在左邊資料集建立遺漏值的類別層級。 即使在聯結 (右) 的資料集中有沒有遺漏值也是如此。
如何聯結複合索引鍵上的資料表?
如果您需要聯結使用複合索引鍵的資料表 (也就是主要索引鍵依賴兩個獨立的資料行) ,請使用如下的模組來串連兩個索引鍵資料行的內容:
-
例如,在 R 腳本中使用類似以下的程式碼,以使用連字號作為分隔符號來串連輸入資料框架的第一個和第二個數據行。
paste(inputdf$Col1,inputdf$Col2,sep="-")
-
SQLite 中的串連運算子為
||
。
如何聯結沒有索引鍵的資料表?
如果您的資料集沒有索引鍵資料行,您仍然可以藉由產生索引鍵或使用 [ 加入資料行 ] 模組,將它與另一個資料集結合。
[ 新增 資料行] 模組的行為就像 R,如果資料集具有相同數目的資料列,就可以逐列合併兩個資料集。 如果資料集的大小不同,就會引發錯誤。
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
Dataset1 | 資料表 | 第一個要聯結的資料集 |
Dataset2 | 資料表 | 第二個要聯結的資料集 |
模組參數
名稱 | 範圍 | 類型 | 預設 | 描述 |
---|---|---|---|---|
L 的聯結索引鍵資料行 | 任意 | ColumnSelection | 選取第一個資料集的聯結索引鍵資料行。 | |
R 的聯結索引鍵資料行 | 任意 | ColumnSelection | 選取第二個資料集的聯結索引鍵資料行。 | |
大小寫須相符 | 任意 | 布林值 | True | 指出索引鍵資料行中是否允許區分大小寫的比較。 |
聯結類型 | List | 類型 | 內部聯結 | 選擇聯結類型。 |
在聯結的資料表中保留右側索引鍵資料行 | 任意 | 布林值 | True | 指出是否在聯結的資料集中保留第二個資料集的索引鍵資料行。 |
輸出
名稱 | 類型 | 說明 |
---|---|---|
結果資料集 | 資料表 | 聯結作業的結果 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0001 | 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。 |
錯誤 0003 | 如果一或多個輸入是 Null 或空白,就會發生例外狀況。 |
錯誤 0006 | 如果參數大於或等於指定的值,就會發生例外狀況。 |
錯誤 0016 | 如果傳遞到模組的輸入資料集應該有相容的資料行類型,但卻不是,則會發生例外狀況。 |
錯誤 0017 | 如果一個或多個指定的資料行具有目前模組不支援的類型,就會發生例外狀況。 |
錯誤 0020 | 如果傳遞給模組的某些資料集的資料行數目太少,就會發生例外狀況。 |
錯誤 0028 | 當資料行集包含重複的資料行名稱且不允許如此時,就會發生例外狀況。 |
錯誤 0011 | 如果傳遞的資料行集的引數不適用於任何資料集資料行,就會發生例外狀況。 |
錯誤 0027 | 當兩個物件必須具有相同的大小,但實際上它們的大小並不相同時,就會發生例外狀況。 |
如需 Studio (傳統) 模組特定的錯誤清單,請參閱機器學習錯誤碼。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。