🔗 STEP 24: データブレンディングの基礎
複数のデータソースを統合して、より深い分析を実現しよう
📋 このステップで学ぶこと
- データブレンディングとは何か
- 結合(Join)との違いと使い分け
- プライマリ・セカンダリデータソースの役割
- リンクフィールドの設定方法
- 実践的なブレンディング例
- ブレンディングの制約と注意点
前提: STEP 5でデータソース接続、STEP 17でLOD表現を理解していること
🔍 1. データブレンディングとは
データブレンディングの定義
データブレンディングは、複数の異なるデータソースをビュー上で統合する機能です。別々の場所にあるデータを、1つのビジュアライゼーションで表示できます。
例えば、あなたが旅行を計画しているとします。
・情報源1:Googleマップ(距離と所要時間)
・情報源2:予約サイト(ホテルの料金)
・情報源3:天気予報サイト(旅行日の天気)
これらを頭の中で「組み合わせて」旅行を計画しますよね。データブレンディングは、Tableauがこの「組み合わせ」を自動でやってくれる機能です!
データブレンディングの使用例
ビジネスでは、様々なシステムからデータを集めて分析することがよくあります。
| 組み合わせるデータ | 分析目的 |
|---|---|
| 売上データ(Excel) + 目標データ(スプレッドシート) | 目標達成率の分析 |
| 販売実績(データベース) + 人口統計(CSV) | 地域特性と売上の相関 |
| Webアクセス(GA) + 売上(社内DB) | コンバージョン分析 |
| 在庫データ(ERP) + 予測データ(別システム) | 需給バランスの確認 |
データブレンディング vs 結合(Join)
Tableauには、複数のデータを組み合わせる方法が2つあります。それぞれの違いを理解しましょう。
| 項目 | データブレンディング | 結合(Join) |
|---|---|---|
| 実行場所 | ビュー上(動的) | データソース(静的) |
| データの場所 | 別々のデータソース | 同じデータソース内 |
| 集計レベル | 集計後に結合 | 行レベルで結合 |
| パフォーマンス | 軽い(必要な時だけ) | 重い(全データ処理) |
| 柔軟性 | ビューごとに変更可能 | 全体に影響 |
| 制約 | LEFT JOIN相当のみ | 様々な結合タイプ |
| ブレンディングを選ぶケース | 結合(Join)を選ぶケース |
|---|---|
|
・データソースが別々(Excel + DB) ・異なる粒度(日別売上 + 月別目標) ・一時的な比較分析 ・パフォーマンス重視 |
・同じデータソース内の複数テーブル ・行レベルの詳細な結合が必要 ・INNER/RIGHT JOINなどが必要 ・恒久的なデータ統合 |
🎯 2. プライマリとセカンダリデータソース
2つのデータソースの役割
データブレンディングでは、2種類のデータソースがあります。プライマリ(主)とセカンダリ(副)です。
映画でいえば、プライマリは主役、セカンダリは脇役です。
主役(プライマリ)の出演シーンはすべて映画に入ります。
脇役(セカンダリ)は、主役と一緒のシーンだけ登場します。
データブレンディングも同じで、プライマリのデータはすべて表示され、セカンダリはプライマリとマッチするデータだけが表示されます。
| 項目 | プライマリ(主) | セカンダリ(副) |
|---|---|---|
| 決まり方 | 最初にビューに追加したデータ | 後から追加したデータ |
| 役割 | 基準となるメインデータ | 補足的な追加データ |
| 表示マーク | 青いチェックマーク ✓ | オレンジのチェックマーク ✓ |
| データの表示 | すべての行が表示される | マッチする行のみ表示 |
- データペインでデータソースを右クリック
- 「プライマリデータソースにする」を選択
- チェックマークが青に変わる
注意:プライマリを変更すると、ブレンディングの関係が変わり、表示される結果が異なる可能性があります。
データブレンディングはLEFT JOIN相当の動作のみです。
・プライマリのすべての行が表示される
・セカンダリは一致する行のみが追加される
・INNER JOIN(両方に存在するデータのみ)やRIGHT JOIN(セカンダリ基準)はできません
もしこれらが必要な場合は、データソースレベルでの結合(Join)を使用してください。
🔗 3. リンクフィールドの設定
リンクフィールドとは
リンクフィールドは、2つのデータソースを結びつける「共通の鍵」です。この鍵が一致するデータ同士が組み合わさります。
学校で「テストの成績表」と「出席簿」を組み合わせる場合、学生番号が共通の鍵になりますよね。
成績表の「学生番号: 001」と出席簿の「学生番号: 001」が同じ人なので、このデータを紐づけられます。
データブレンディングも同じで、リンクフィールドが一致するデータ同士を組み合わせます!
自動リンク
Tableauは、特定の条件を満たすフィールドを自動的にリンクします。
| 条件 | 説明 |
|---|---|
| フィールド名が同じ | 「商品名」と「商品名」→ 自動リンク |
| データ型が同じ | 文字列と文字列、数値と数値 |
| ディメンションである | カテゴリ項目(メジャーではない) |
確認方法:リンクされているフィールドには、データペインで小さな鎖のアイコン 🔗 が表示されます。
手動リンクの設定
フィールド名が異なる場合や、自動リンクされない場合は、手動でリンクを設定します。
- メニューの「データ」をクリック
- 「リレーションシップの編集」を選択
- 「プライマリデータソース」と「セカンダリデータソース」を選択
- リンクするフィールドを選択
- 「追加」をクリック
- 「OK」をクリック
| ケース | プライマリ | セカンダリ |
|---|---|---|
| 名前が異なる | [Product Name] | [商品名] |
| 複数フィールド | [年] + [月] | [年月] |
| 計算フィールド | [年月] (計算で作成) | [年月] |
リンクの解除:
- リンクされているフィールドを右クリック
- 「リンクの削除」を選択
注意:解除後に再度リンクするには、手動設定が必要です。
💼 4. 実践例:売上と目標の比較
シナリオ
実際のビジネスシーンを想定して、データブレンディングを実践してみましょう。
- プライマリ:日別売上データ(Excel)
- セカンダリ:月別目標データ(Googleスプレッドシート)
- 目的:売上実績と目標を比較するグラフを作成
- 課題:粒度が違う(日別 vs 月別)
売上データ(日別):
| 日付 | 売上金額 |
|---|---|
| 2024-01-01 | 150,000 |
| 2024-01-02 | 180,000 |
| 2024-01-03 | 160,000 |
目標データ(月別):
| 年月 | 目標金額 |
|---|---|
| 2024-01 | 5,000,000 |
| 2024-02 | 5,500,000 |
| 2024-03 | 6,000,000 |
- Tableauを開き、売上データ(Excel)を接続
- メニュー →「データ」→「新しいデータソース」
- 目標データ(Googleスプレッドシート)を接続
- 売上データがプライマリ(青✓)になっていることを確認
粒度を合わせるため、売上データに「年月」フィールドを作成します。
- データペインで右クリック →「計算フィールドの作成」
- 名前:年月
- 計算式:
DATE(YEAR([日付]), MONTH([日付]), 1) - 「OK」をクリック
- メニュー →「データ」→「リレーションシップの編集」
- プライマリ:売上データの「年月」(計算フィールド)
- セカンダリ:目標データの「年月」
- 「追加」→「OK」
- 列シェルフ:MONTH([年月])
- 行シェルフ:SUM([売上金額])
- セカンダリから SUM([目標金額]) を行シェルフに追加
- デュアル軸に設定(右クリック→「デュアル軸」)
- マークで売上を棒グラフ、目標を折れ線グラフに設定
- 新しい計算フィールドを作成
- 名前:達成率
- 計算式:
SUM([売上金額]) / SUM([目標金額]) - 書式設定でパーセンテージ表示に変更
- ラベルに追加
⚙️ 5. ブレンディングの制約と対処法
主な制約
データブレンディングには、いくつかの制約があります。事前に理解しておきましょう。
| 制約 | 説明 |
|---|---|
| LEFT JOINのみ | プライマリが基準、INNER/RIGHT JOINは不可 |
| 集計後の結合 | 行レベルの詳細は見えない |
| フィルター制限 | セカンダリの一部フィルター機能が使えない |
| パフォーマンス | 大量データでは遅くなる可能性 |
| 計算の制約 | 両データソースをまたぐ複雑な計算は困難 |
よくある問題と解決策
| 原因 | 解決策 |
|---|---|
| リンクが正しくない | リンクフィールドを確認・再設定 |
| データ型が不一致 | データ型を統一(文字列→文字列) |
| NULL値がある | NULLを除外するフィルターを追加 |
| 原因 | 解決策 |
|---|---|
| 粒度の違い | 計算フィールドで粒度を合わせる |
| 重複カウント | LOD表現を使用 |
| 原因 | 解決策 |
|---|---|
| 大量データ | データ抽出(Extract)を使用 |
| 不要なフィールド | 必要なフィールドのみ使用 |
| 複雑な計算 | データソース側で事前集計 |
📝 STEP 24 のまとめ
- データブレンディング:ビュー上で複数データソースを統合
- 結合との違い:動的 vs 静的、集計後 vs 行レベル
- プライマリ:基準となるデータソース(青✓)、すべて表示
- セカンダリ:補足データソース(オレンジ✓)、マッチのみ
- リンクフィールド:データを結びつける共通の鍵
- 制約:LEFT JOIN相当のみ、行レベル詳細は見えない
データブレンディングは異なるデータソースを簡単に統合できる強力な機能ですが、LEFT JOIN相当の動作のみという制約があります。
複雑な結合が必要な場合は、データソースレベルでの結合を検討しましょう。適切に使えば、別々のシステムにあるデータを柔軟に組み合わせて分析できます!
次のSTEP 25では、「Tableauパフォーマンス最適化の基礎」を学びます。大量データを扱う際のパフォーマンス改善テクニックをマスターしましょう!
📝 理解度チェック
データブレンディングと結合(Join)の主な違いは何ですか?
データブレンディング:
・ビュー上で動的に統合
・別々のデータソースを組み合わせる
・集計後に結合(行レベルの詳細は見えない)
結合(Join):
・データソースで静的に結合
・同じデータソース内のテーブルを組み合わせる
・行レベルで結合(詳細データを保持)
プライマリデータソースとセカンダリデータソースの違いは何ですか?
プライマリ(青✓):
・最初にビューに追加したデータソース
・基準となるメインデータ
・すべての行が表示される
セカンダリ(オレンジ✓):
・後から追加したデータソース
・補足的なデータ
・プライマリとマッチする行のみ表示(LEFT JOIN相当)
リンクフィールドが自動で設定される条件を3つ挙げてください。
1. フィールド名が同じ(例:「商品名」と「商品名」)
2. データ型が同じ(例:文字列と文字列、数値と数値)
3. ディメンション(カテゴリ)である(メジャーではない)
これらの条件がすべて揃うと、Tableauが自動的にリンクを設定します。
日別売上データと月別目標データをブレンディングする際、なぜ計算フィールドが必要ですか?
粒度(データの細かさ)が異なるからです。
・売上データ:日別(2024-01-01、2024-01-02…)
・目標データ:月別(2024-01、2024-02…)
リンクするには、同じ粒度のフィールドが必要です。そのため、日別の売上データに「年月」の計算フィールドを作成し、月別の目標データとリンクできるようにします。
計算式例:DATE(YEAR([日付]), MONTH([日付]), 1)
🎯 実践演習
2つのデータソース(ExcelとCSV)を接続し、データブレンディングを設定してください。リンクフィールドが正しく設定されているか確認してください。
- 1つ目のデータソース(Excel)を接続
- メニュー →「データ」→「新しいデータソース」
- 2つ目のデータソース(CSV)を接続
- 新しいワークシートを作成
- データペインでプライマリ(青✓)を確認
- リンクアイコン(🔗)が表示されているフィールドを確認
- リンクがない場合:メニュー →「データ」→「リレーションシップの編集」
- 共通のフィールドでリンクを設定
- 両データソースのフィールドをビューに追加して確認
日別の売上データ(プライマリ)と月別の目標データ(セカンダリ)をブレンディングし、月別の達成率を計算するビジュアルを作成してください。
- データ準備:
- 売上データに「年月」計算フィールド作成
- 計算式:DATE(YEAR([日付]), MONTH([日付]), 1)
- リンク設定:
- メニュー →「データ」→「リレーションシップの編集」
- 売上データの[年月]と目標データの[年月]をリンク
- ビジュアル作成:
- 列:MONTH([年月])
- 行:SUM([売上金額])
- セカンダリからSUM([目標金額])を追加
- デュアル軸で棒グラフ+折れ線グラフ
- 達成率計算:
- 計算フィールド:SUM([売上金額]) / SUM([目標金額])
- 書式:パーセンテージ
- ラベルに追加
3つのデータソース(売上、目標、前年実績)をブレンディングし、当年実績・目標・前年比をすべて表示するダッシュボードを作成してください。
- データソース接続:
- プライマリ:当年売上データ
- セカンダリ1:目標データ
- セカンダリ2:前年売上データ
- リンク設定:
- すべてのデータソースに[年月]フィールドを作成
- 各データソースを[年月]でリンク
- 計算フィールド作成:
- 前年比:(当年 – 前年) / 前年
- 目標達成率:当年 / 目標
- 前年差額:当年 – 前年
- ビジュアル作成:
- グラフ1:3本の棒グラフ(当年、目標、前年)
- グラフ2:前年比のトレンドライン
- グラフ3:目標達成率のゲージ
- ダッシュボード:
- 3つのグラフを配置
- 月別フィルターを追加
- フィルターアクションで連動
💡 ヒント:複数のセカンダリデータソースを使う場合、パフォーマンスに注意。可能であれば、データ抽出(Extract)を使用しましょう。
❓ よくある質問
フィールド名が少しでも違う場合(例:「商品名」vs「Product Name」)や、データ型が異なる場合(例:文字列 vs 数値)は自動リンクされません。メニュー →「データ」→「リレーションシップの編集」から手動でリンクを設定してください。
データブレンディングはLEFT JOIN相当なので、プライマリ(左側)のすべてのデータが表示されます。セカンダリにしかないデータは表示されません。どちらを基準にしたいかで、プライマリを選択してください。
ただし、行レベルの詳細な結合が必要な場合や、INNER JOIN/RIGHT JOINが必要な場合は、データソースを統合して結合を使いましょう。一時的な比較分析ならブレンディングが手軽です。
データソースフィルターやコンテキストフィルターを使うか、プライマリデータソース側でフィルターを適用してください。または、プライマリとセカンダリを入れ替えることも検討してください。
確認ポイント:
・リンクフィールドの値が完全一致しているか(スペースや大文字小文字も含む)
・データ型が一致しているか
・プライマリにあってセカンダリにないデータはNULLになる(LEFT JOIN相当のため)
すべてのセカンダリデータソースは、プライマリとリンクされます(セカンダリ同士は直接リンクできません)。パフォーマンスへの影響も大きくなるため、可能であればデータソースを事前に統合することを検討してください。
学習メモ
BIツール入門 - Step 24