聯結資料

聯結兩個資料集

類別: 資料轉換/操作

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

模組概觀

本文說明如何使用 Azure Machine Learning Studio 中的 聯結資料 模組 (傳統) ,以使用資料庫樣式的 聯結 作業來合併兩個資料集。

若要在兩個資料集上執行聯結,它們必須與 單一 索引鍵資料行相關聯。 不支援複合索引鍵。

如何設定聯結資料

  1. 在 Azure Machine Learning Studio (傳統) 中,新增您想要合併的資料集,然後將 聯結資料 模組拖曳到您的實驗中。

    您可以在 [ 資料轉換 ] 類別中的 [ 操作] 下找到此模組。

  2. 將資料集連接到 聯結資料 模組。

    聯結資料 模組不支援右外部聯結,因此,如果您想要確保特定資料集的資料列包含在輸出中,該資料集必須位於 lefthand 輸入上。

  3. 按一下 [ 啟動資料行選取器 ],為左邊輸入的資料集選擇單一索引鍵資料行。

  4. 按一下 [ 啟動資料行選取器 ],針對右邊輸入的資料集選擇單一索引鍵資料行。

  5. 如果您要聯結文字資料行,而且想要確保聯結保留區分大小寫,請選取 [ 符合案例 ] 選項。

    例如,如果您選取此選項,則會被 A1000 視為與不同的索引鍵值 a1000

    如果您取消選取此選項,則 會強制執行區分大小寫,而且會 A1000 視為與相同 a1000

  6. 您可以使用 [ 聯結類型 ] 下拉式清單來指定資料集的組合方式。 類型:

    • 內部聯結內部聯結 是典型的聯結作業。 只有當索引鍵資料行的值符合時,它才會傳回合併的資料列。

    • 左方外部聯結左方外部聯結 會傳回左側資料表中所有資料列的聯結資料列。 當左資料表中的資料列沒有與右資料表中相符的資料列時,傳回的資料列會包含右資料表中所有資料行的遺漏值,除非您指定遺漏值的取代值。

    • 完整外部聯結完全外部 聯結會傳回左側資料表中的所有資料列, (table1) 和右邊資料表 (table2) 。

      針對左側資料表中沒有相符資料列的每個資料列,聯結結果會包含右邊資料表中包含遺漏值的資料列。

      針對右邊資料表中沒有相符資料列的每個資料列,聯結結果會包含一個資料列,其中包含左側資料表中所有資料行的遺漏值。

    • 左方半聯結:當索引鍵資料行的值相符時, 左方半聯結 只會傳回左側資料表中的值。

  7. 針對選項,請 在聯結的資料表中保持正確的索引鍵資料行

    • 取消選取此選項,以取得結果中的單一索引鍵資料行。
    • 保留選取的選項,以從這兩個輸入資料表中查看金鑰。
  8. 執行實驗,或選取 [聯結資料] 模組和選取的 [執行],以 執行聯結。

  9. 若要查看結果,請以滑鼠右鍵按一下 聯結資料 模組,選取 [ 結果資料集],然後按一下 [ 視覺化]。

範例

您可以在 AZURE AI 資源庫中看到此模組的使用範例:

技術說明

本節說明執行詳細資料,以及一些常見問題的解答。

限制

  • 結合的資料集不能有兩個相同名稱的資料行。 如果左邊和右邊資料集有任何重複的資料行名稱,則會將數值尾碼附加到正確資料集的資料行名稱,使其成為唯一的。

    例如,如果兩個資料集都有一個名為 Month 的資料行,則左邊資料集的資料行會維持原狀,而右邊資料集的資料行會重新命名為 Month (1) 。

  • 用於比較索引鍵值的演算法是強制雜湊。

  • 只要輸入資料集的相對應資料行是類別,聯結的資料集的每個資料行就會保留類別類型。

  • 在左方外部聯結中,如果有任何遺漏值,則會在左邊資料集建立遺漏值的類別層級。 即使在聯結 (右) 的資料集中有沒有遺漏值也是如此。

如何聯結複合索引鍵上的資料表?

如果您需要聯結使用複合索引鍵的資料表 (也就是主要索引鍵依賴兩個獨立的資料行) ,請使用如下的模組來串連兩個索引鍵資料行的內容:

  • 執行 R 指令碼

    例如,在 R 腳本中使用類似以下的程式碼,以使用連字號作為分隔符號來串連輸入資料框架的第一個和第二個數據行。 paste(inputdf$Col1,inputdf$Col2,sep="-")

  • 套用 SQL 轉換

    SQLite 中的串連運算子為 ||

如何聯結沒有索引鍵的資料表?

如果您的資料集沒有索引鍵資料行,您仍然可以藉由產生索引鍵或使用 [ 加入資料行 ] 模組,將它與另一個資料集結合。

[ 新增 資料行] 模組的行為就像 R,如果資料集具有相同數目的資料列,就可以逐列合併兩個資料集。 如果資料集的大小不同,就會引發錯誤。

預期的輸入

名稱 類型 Description
資料集1 資料表 第一個要聯結的資料集
資料集2 資料表 第二個要聯結的資料集

模組參數

Name 範圍 類型 預設 描述
L 的聯結索引鍵資料行 任意 ColumnSelection 選取第一個資料集的聯結索引鍵資料行。
R 的聯結索引鍵資料行 任意 ColumnSelection 選取第二個資料集的聯結索引鍵資料行。
大小寫須相符 任意 布林值 True 指出索引鍵資料行中是否允許區分大小寫的比較。
聯結類型 List 類型 內部聯結 選擇聯結類型。
在聯結的資料表中保留右側索引鍵資料行 任意 布林值 True 指出是否在聯結的資料集中保留第二個資料集的索引鍵資料行。

輸出

名稱 類型 Description
結果資料集 資料表 聯結作業的結果

例外狀況

例外狀況 描述
錯誤 0001 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。
錯誤 0003 如果一或多個輸入是 Null 或空白,就會發生例外狀況。
錯誤 0006 如果參數大於或等於指定的值,就會發生例外狀況。
錯誤 0016 如果傳遞到模組的輸入資料集應該有相容的資料行類型,但卻不是,則會發生例外狀況。
錯誤 0017 如果一個或多個指定的資料行具有目前模組不支援的類型,就會發生例外狀況。
錯誤 0020 如果傳遞給模組的某些資料集的資料行數目太少,就會發生例外狀況。
錯誤 0028 當資料行集包含重複的資料行名稱且不允許如此時,就會發生例外狀況。
錯誤 0011 如果傳遞的資料行集的引數不適用於任何資料集資料行,就會發生例外狀況。
錯誤 0027 當兩個物件必須具有相同的大小,但實際上它們的大小並不相同時,就會發生例外狀況。

如需 Studio (傳統) 模組特定的錯誤清單,請參閱 機器學習錯誤碼

如需 API 例外狀況的清單,請參閱 機器學習 REST API 錯誤碼

另請參閱

操縱
資料轉換
A-Z 模組清單