左結合
sparklyr では、単一のデータフレームを操作するだけでなく、2つのデータフレームを結合することもできます。dplyr 構文を使ったテーブル結合の詳細については、Joining Data with dplyr コースで解説しています。この章の後半では、Spark を使った結合の具体的な例を見ていきましょう。
左結合(left join)は、最初のテーブルのすべての値を取得し、2番目のテーブルで一致するレコードを探します。一致するレコードがあれば2番目のテーブルのデータを追加し、なければ欠損値を補います。その仕組みを示したのが次の図です。

左結合は、最初のテーブルに列を追加する「変換結合(mutating join)」の一種です。sparklyr で左結合を行うには、left_join() を呼び出し、2つのティブルと結合に使う列名の文字ベクトルを渡します。
left_join(a_tibble, another_tibble, by = c("id_col1", "id_col2"))
この結合を言葉で表すとき、テーブル名の順序は逆になります。上記の結合は「another_tibble を a_tibble に左結合する」と表現します。
この演習では、各アーティストを表すタームを含む新しい Spark DataFrame を使います。タームには「pop」のような一般的なものから、「swiss hip hop」や「mathgrindcore」といったニッチなジャンルまで、さまざまな種類が含まれています。
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark への接続は spark_conn として作成済みです。Spark に格納されたトラックメタデータとアーティストタームに紐付けられたティブルは、それぞれ track_metadata_tbl と artist_terms_tbl として事前に定義されています。
- 左結合を使って、
artist_id列をキーにアーティストタームをトラックメタデータに結合します。- 結合先のテーブル
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?
___