セミ結合
セミ結合はアンチ結合の逆、いわば「アンチのアンチ結合」です。
セミ結合は、2つ目のテーブルに一致する行が見つかる場合に、1つ目のテーブルの該当行を返します。その仕組みは以下の図で確認できます。

構文は他の結合と同じです。結合関数を semi_join() に置き換えるだけです。
semi_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
セミ結合の結果とアンチ結合の結果を合わせると、元のテーブルが得られます。つまり、テーブルの内容や結合方法に関わらず、semi_join(A, B) と anti_join(A, B) を合わせると A が返されます(行の順序は異なる場合があります)。
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark への接続は spark_conn として作成済みです。Spark に格納されたトラックのメタデータとアーティストタームに接続された Tibble は、それぞれ track_metadata_tbl と artist_terms_tbl として定義済みです。
artist_id列を使って、アーティストタームをトラックのメタデータにセミ結合で結合しましょう。結果をjoinedに格納してください。sdf_dim()を使って、結合後のテーブルの行数と列数を確認しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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?
___