結合の違いって??具体的なデータでみるデータ結合の種類と注意点 | VizHacker

結合の違いとは?具体的なデータでみるデータ結合の種類と注意点

今回は、データセットを作成する際必ず使う『結合』についてです。

結合には

①内部結合(inner join)

②左結合(left join)

③右結合(left join)

④外部結合(full outer join)

⑤クロス結合(cross join)

と種類がいくつかありますが、

アウトプットの形に応じ使い分ける必要が多々あるのでご紹介します。

 

↓今回使うサンプルデータ。ECサイトなどの会員サイトをイメージしています。結合キーは「氏名」です。

当然のことですが、KEYとするデータは型が一致している必要があります。

同じ日付データでも、片方がDate型、他方が文字列になっていると結合エラーとなるので気をつけたいトコです。

①内部結合(inner join)

両方に含まれる、合体可能な結合キーのみを取り出す方法。

今回で言うと、「Cさん」「Fさん」「Gさん」のみが両方に含まれるキーなのでその部分のみを合体します。

↓結合後のテーブル

②左結合(left join)

左側の表の全ての行が表示されるよう、右側の表を結合させる方法。

↓今回の場合、「会員情報」のAさん〜Iさんまでの行が全て表示されるように結合されます

「会員のうちの、解約者の割合を知りたい」などの場合に適しています。

 

③右結合(right join)

左結合の逆ver。右側の表の全ての行が表示されるよう、左側の表を結合させる方法。

あまり使わない気がします。

ちなみに、A (left join) B と B (right join) A は同義です。

↓完成テーブル。右側の表のCさん、Fさん、Gさん、Zさんの行全てが表示されるように結合されます。

 

④完全外部結合(full outer join)

結合させるテーブルの全ての行を取得する結合。

漏れなくデータを引き寄せられますが、ローデータのサイズが大きい場合クエリを走らせるだけで時間がかかる場合があるので注意。

↓両テーブルの全ての表が取得されるよう結合されます。

 

Tableau上で完全外部結合をする時の注意点

Tableau上で完全外部結合をする時は注意するべきことがあります。まずは下記画像を見てください。

Tableauの場合両テーブルの結合キーが表示されており、「氏名」が統一されていません。
「Zさん」を挿入してあげる必要があります。

対処法として、
結合キー複数をシフトキーを押しながら(Macはcommand)右クリックし、「一致していないフィールドをマージ」を選択。

すると、上手く氏名が寄せられました。

マージ後はフィールド名を変えておきましょう。

 

⑤クロス結合(cross join)

Tableauのデフォルトの結合機能にはありません。ですが、Big QueryなどSQLを使う際には地味に活躍します。

クロス結合(交差結合)とは、その名の通り両テーブルのデータを全て取り出し全ての組み合わせで結合する方法。

 

ここでは、都道府県・市区町村の人口を比べたいとしましょう。

↓クロスジョインでは、左テーブルの行それぞれに、右テーブルを全ての組み合わせで結合

↓結合後のテーブル。行数は、左テーブルの行×右テーブルの行になります。

「市区町村の人口」と「都道府県の人口」の比率を出せますね。
クロス結合は、出番こそ少ないものの比較したいときなど出番がたまにあります。

 

集計ミスを防ぐために

 

今回は5つの結合を紹介しました。

 

「本当は左結合だけど、内部結合にしてて情報漏れがあった…..」

 

なんて事態を防ぐために、結合状態は慎重に確かめる必要がありそうです。

 

1件の返信

  1. 2019年3月21日

    […] 以前、「データ結合」の種類と仕組みについてご紹介しました。 […]

本サイトではリクエスト募集しています。