始める無料で始める

左結合

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_tibblea_tibble に左結合する」と表現します。

この演習では、各アーティストを表すタームを含む新しい Spark DataFrame を使います。タームには「pop」のような一般的なものから、「swiss hip hop」や「mathgrindcore」といったニッチなジャンルまで、さまざまな種類が含まれています。

この演習はコースの一部です

sparklyr を使った Spark 入門(R)

コースを見る

演習の手順

Spark への接続は spark_conn として作成済みです。Spark に格納されたトラックメタデータとアーティストタームに紐付けられたティブルは、それぞれ track_metadata_tblartist_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?
___
コードを編集して実行