1. 学ぶ
  2. /
  3. コース
  4. /
  5. sparklyr を使った Spark 入門(R)

Connected

演習

左結合

sparklyr では、単一のデータフレームを操作するだけでなく、2つのデータフレームを結合することもできます。dplyr 構文を使ったテーブル結合の詳細については、Joining Data with dplyr コースで解説しています。この章の後半では、Spark を使った結合の具体的な例を見ていきましょう。

左結合(left join)は、最初のテーブルのすべての値を取得し、2番目のテーブルで一致するレコードを探します。一致するレコードがあれば2番目のテーブルのデータを追加し、なければ欠損値を補います。その仕組みを示したのが次の図です。

A left join, explained using table of colors.

左結合は、最初のテーブルに列を追加する「変換結合(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」といったニッチなジャンルまで、さまざまな種類が含まれています。

指示

100 XP

Spark への接続は spark_conn として作成済みです。Spark に格納されたトラックメタデータとアーティストタームに紐付けられたティブルは、それぞれ track_metadata_tbl と artist_terms_tbl として事前に定義されています。

  • 左結合を使って、artist_id 列をキーにアーティストタームをトラックメタデータに結合します。
    • 結合先のテーブル track_metadata_tbl を最初に指定します。
    • 結合するテーブル artist_terms_tbl を次に指定します。
    • 結果を joined に代入します。
  • sdf_dim() を使って、結合後のテーブルの行数と列数を確認します。