Anti join
在上一題中,合併後的資料集比你預期的小,因為不是每位藝人都有對應的標籤。Anti join 對於排查其他 join 的問題特別好用。
Anti join 會回傳第一個資料表中,在第二個資料表找不到對應鍵值的那些列。原理如下面的圖所示。

Anti join 屬於一種「過濾式 join」,因為它會回傳第一個資料表的內容,但根據是否符合對應條件來過濾其列。
Anti join 的語法和 left join 幾乎相同:只要把 left_join() 換成 anti_join() 即可。
anti_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
已為你建立 spark_conn Spark 連線。儲存在 Spark 中、與曲目中繼資料與藝人標籤對應的 tibbles 已分別預先定義為 track_metadata_tbl 與 artist_terms_tbl。
- 使用 anti join 依
artist_id欄位將藝人標籤與曲目中繼資料進行連結。將結果指定給joined。 - 使用
sdf_dim()來確認連結後資料表的列數與欄數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# track_metadata_tbl and artist_terms_tbl have been pre-defined
track_metadata_tbl
artist_terms_tbl
# Anti join artist terms to track metadata by artist_id
joined <- ___
# How many rows and columns are in the joined table?
___