Tableau|データモデル(リレーションシップ・JOIN・UNION)
リレーションシップとJOINの違い・4種類のJOIN・UNIONの使い方を図解で解説。試験範囲1.2の完全カバー。
データモデル:リレーションシップ・JOIN・UNION(試験範囲 1.2)
この章で学ぶこと
- リレーションシップとJOINの違いを説明できる
- 各JOINタイプ(INNER/LEFT/RIGHT/FULL)の違いを理解する
- UNIONの使い方と使用場面を理解する
概念解説
データモデルとは
Tableauのデータソースで複数のテーブルをどう組み合わせるかを定義するもの。
主な方法は3種類:
| 方法 | 概要 | 用途 |
|---|---|---|
| リレーションシップ | テーブルを柔軟に関連付ける(Tableau独自) | 異なる粒度のテーブルの結合 |
| JOIN | SQLのJOINと同じ。行レベルで結合 | 同じ粒度のテーブルの結合 |
| UNION | テーブルを縦に積み上げる | 同じ構造のテーブルの統合 |
リレーションシップ(Relationship)
Tableau 2020.2以降の標準的な結合方式。
- データソースページで、テーブルをキャンバスに配置して繋ぐだけ
- 行レベルのJOINをしない → ビューで使うフィールドに応じて自動的に適切なクエリを生成
- 異なる粒度のテーブルを扱うときに重複や欠損が起きにくい
[注文テーブル] ←→ [顧客テーブル](顧客IDで関連)
リレーションシップのメリット:
- NULL処理・重複データの問題が少ない
- 各テーブルが独自の粒度を保てる
- パフォーマンスが最適化される
JOIN
SQLのJOINと同様に、行レベルでテーブルを結合する。
データソースページで「結合」タブを選択して設定。
JOINの種類
| JOIN種別 | 返すデータ | イメージ |
|---|---|---|
| INNER JOIN | 両テーブルで一致するレコードのみ | 積集合 |
| LEFT JOIN | 左テーブル全件 + 右テーブルの一致分 | 左優先 |
| RIGHT JOIN | 右テーブル全件 + 左テーブルの一致分 | 右優先 |
| FULL OUTER JOIN | 両テーブルの全件 | 和集合 |
図解:
左テーブル(注文) 右テーブル(顧客)
INNER JOIN:
[一致する注文のみ] × [一致する顧客のみ]
LEFT JOIN:
[全注文] × [一致する顧客 or NULL]
RIGHT JOIN:
[一致する注文 or NULL] × [全顧客]
FULL OUTER JOIN:
[全注文] × [全顧客](一致しないものはNULL)
実際の例:
| 注文ID | 顧客ID | 顧客名(JOINで追加) |
|---|---|---|
| 001 | C001 | 田中 太郎 |
| 002 | C002 | 鈴木 花子 |
| 003 | C999 | NULL(顧客不明の場合) |
LEFT JOINの場合、顧客IDが一致しなくても注文レコードは残り、顧客名がNULLになる。
リレーションシップ vs JOIN:使い分け
| 状況 | 推奨 |
|---|---|
| 異なる粒度のテーブル(注文テーブルと月別予算テーブル等) | リレーションシップ |
| 同じ粒度で完全に行結合したい | JOIN |
| 細かいSQL的制御が必要 | JOIN(またはカスタムSQL) |
| データの重複を避けたい | リレーションシップ |
UNION
同じ構造(列が同じ)の複数テーブルを縦に積み上げて1つにする。
テーブルA(2022年データ) テーブルB(2023年データ)
注文ID | 売上 注文ID | 売上
001 | 1000 201 | 2000
002 | 1500 202 | 2500
↓ UNION
注文ID | 売上
001 | 1000
002 | 1500
201 | 2000
202 | 2500
UNIONの使用場面:
- 年次ファイルが別々に存在する場合(2021.csv, 2022.csv, 2023.csv)
- 同じフォーマットの複数ファイルを一括分析する場合
ワイルドカードUNION:
ファイル名パターンで自動的に複数ファイルをUNIONできる
例:sales_202*.csv → 2020年以降のファイルをすべて統合
よくある間違い・ひっかけポイント
❌ 「JOINとリレーションシップは同じ」
✅ JOINは行レベルの結合。リレーションシップはビューに応じた柔軟な結合
❌ 「UNIONは列方向にデータを追加する」
✅ UNIONは**行方向(縦)**に積み上げる。列追加はJOINの役割
❌ 「LEFT JOINは左テーブルのデータのみ返す」
✅ LEFT JOINは左テーブル全件+一致する右テーブルのデータを返す
❌ 「INNER JOINが最も多くのデータを返す」
✅ FULL OUTER JOINが最も多くのデータを返す
試験対策ポイント
- INNER JOIN = 一致するものだけ
- LEFT JOIN = 左テーブル全件(一致しない右はNULL)
- UNION = 縦に積む(同じ構造が必要)
- リレーションシップ = Tableau独自の柔軟な結合(2020.2以降)
- JOINはデータソースページの「物理テーブル」レイヤーで設定
- リレーションシップはデータソースページの「論理テーブル」レイヤーで設定
確認問題
Q1. 2022年の販売データと2023年の販売データが別々のCSVファイルに存在します。同じ列構造です。これらを1つのデータソースにまとめるための最適な方法はどれですか?
- A. JOIN
- B. UNION
- C. リレーションシップ
- D. データブレンド
正解:B 同じ構造のデータを縦に積む場合はUNIONを使用する。
Q2. 注文テーブル(全注文)と顧客テーブルを結合して、顧客情報がない注文も含めてすべての注文を表示したい場合、どのJOINを使いますか?
- A. INNER JOIN
- B. RIGHT JOIN
- C. LEFT JOIN(注文テーブルが左)
- D. FULL OUTER JOIN
正解:C 注文テーブルを左に置いてLEFT JOINすると、顧客情報がなくても全注文が表示される。
Q3. リレーションシップとJOINの違いとして正しいものはどれですか?
- A. リレーションシップはTableau 2020.2以前の機能
- B. JOINはビューで使うフィールドに応じて自動でクエリを最適化する
- C. リレーションシップは行レベルでデータを結合しない
- D. JOINは異なるデータソース間でのみ使用できる
正解:C リレーションシップは行レベルのJOINをせず、ビューの内容に応じて適切なクエリを生成する。
- 1. 📊Tableau Desktop Specialist 学習ロードマップ
- 2. 🔌Tableau|ライブ接続と抽出(.hyper/.TDS)
- 3. 🔗Tableau|データモデル(リレーションシップ・JOIN・UNION)
- 4. 🏷️Tableau|データプロパティの管理(別名・地理的役割・データ型)
- 5. 📈Tableau|基本チャートの作成(棒・折れ線・散布図・地図・二重軸など)
- 6. 🗂️Tableau|データ整理とフィルター(グループ・セット・階層・日付フィルター)
- 7. 🧮Tableau|分析機能(参照線・表計算・ビン・計算フィールド・パラメーター)
- 8. 🎨Tableau|書式設定(色・形状・サイズ・フォント・アニメーション・凡例)
- 9. 🖥️Tableau|ダッシュボードとストーリー(アクション・デバイスレイアウト・Viz in Tooltip)
- 10. 📤Tableau|共有とエクスポート(.twbx・PDF・PowerPoint・Tableau Server)
- 11. 📐Tableau|ディメンションとメジャーの違い
- 12. 🔵Tableau|連続(緑)と離散(青)の違い
- 13. 🔢Tableau|集計の仕組み(SUM・AVG・COUNTD・粒度)
- 14. ➕Tableau|補足:ページシェルフ・追加チャート・トレンドライン・製品ラインナップ
- 15. ✅Tableau|確認問題:領域1 データ接続とデータ準備(20問)
- 16. ✅Tableau|確認問題:領域2 データの探索と分析(30問)
- 17. ✅Tableau|確認問題:領域3 インサイトの共有(25問)
- 18. ✅Tableau|確認問題:領域4 Tableauの概念の理解(15問)