開始使用免費開始

Semi join

Semi join 是 anti join 的相反;你可以把它想成「反反 join」。

Semi join 會回傳第一個資料表中,在第二個資料表「找得到對應鍵」的那些列。下圖示意其原理。

A semi join, explained using table of colors.

語法與其他 join 類型相同;只要把 join 函式換成 semi_join() 即可。

semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))

你可能也注意到,semi join 的結果加上 anti join 的結果,會組合回原始資料表。因此,不論資料表內容或 join 的方式為何,semi_join(A, B) 加上 anti_join(A, B) 都會得到 A(列的順序可能不同)。

本練習屬於課程

使用 R 的 sparklyr:Spark 入門

檢視課程

練習說明

我們已為你建立 spark_conn Spark 連線。存放在 Spark 裡的曲目中繼資料與演出者標籤,分別已附加為 track_metadata_tblartist_terms_tbl tibbles。

  • 使用 semi join,依 artist_id 欄位將演出者標籤與曲目中繼資料進行連接。把結果指定給 joined
  • 使用 sdf_dim() 來判斷 joined 資料表共有多少列與多少欄。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# track_metadata_tbl and artist_terms_tbl have been pre-defined
track_metadata_tbl
artist_terms_tbl

# Semi join artist terms to track metadata by artist_id
joined <- ___

# How many rows and columns are in the joined table?
___
編輯並執行程式碼