Left join
除了操作單一資料框外,sparklyr 也能把兩個資料框做關聯。想完整學習如何用 dplyr 語法連接資料表,請參考課程[Joining Data with dplyr](https://www.datacamp.com/courses/joining-data-with-dplyr)。在本章其餘內容中,你會看到幾個在 Spark 上實作的例子。
Left join 會取第一個資料表的所有列,並在第二個資料表中尋找對應鍵的匹配。若找到匹配,就把第二個表的資料加進來;若找不到,則補上遺漏值。下圖示意這個原理。

Left join 屬於「mutating join」的一種,因為它只是把欄位加到第一個資料表上。要用 sparklyr 進行 left join,呼叫 left_join(),傳入兩個 tibble,以及一個指定連接鍵欄位名稱的字元向量。
left_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
在文字描述這種連接時,常把表名顛倒來講。上述的連接會寫成「another_tibble 被 left join 到 a_tibble」。
本練習會用到另一個 Spark DataFrame,裡面是描述各個藝人的詞彙。這些詞彙從相當廣泛的標籤(如「pop」)到較小眾的類型(如「swiss hip hop」與「mathgrindcore」)都有。
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
已為你建立名為 spark_conn 的 Spark 連線。已將儲存在 Spark 的曲目中繼資料與藝人詞彙分別掛載為 track_metadata_tbl 與 artist_terms_tbl 兩個 tibble。
- 以
artist_id欄位進行 left join,將藝人詞彙表連接到曲目中繼資料。- 要被連接的表
track_metadata_tbl放在第一個。 - 要連接進去的表
artist_terms_tbl放在第二個。 - 將結果指定給
joined。
- 要被連接的表
- 使用
sdf_dim()來確認合併後資料表的列數與欄數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# track_metadata_tbl and artist_terms_tbl have been pre-defined
track_metadata_tbl
artist_terms_tbl
# Left join artist terms to track metadata by artist_id
joined <- ___(___, ___, by = ___)
# How many rows and columns are in the joined table?
___