3本記事を書く予定ですが、1本目は、以下のデータソース関係について記載したい
・結合、リレーションシップ、ブレンドの操作方法と違い
・抽出フィルター、データソースフィルターの操作方法と違い
1.結合、リレーションシップ、ブレンドの操作方法と違い
1.1 基本的な考え方
ざっくり3つの違いを記載
| 方法 | 考え方 |
|---|---|
| 結合 | 物理テーブルを1つのテーブルに統合してから集計 |
| リレーションシップ | 論理テーブルを別々に保持し、Vizの粒度に合わせた適切なテーブルを選択、クエリを発行して集計 |
| ブレンド | 別々のデータソースを先に集計してから結果を同じビューに表示 |
1.2 操作方法の違い
サンプルスーパーストアを例に実際のTableauの画面イメージは以下の通り
リレーションシップ
・テーブルをそれぞれドラッグするだけ(必要に応じて紐づける項目を指定する)

ブレンド
・複数のデータが登録されている状態で、項目に鎖マークが出ている項目を共通の切り口としてTableauは認識します。
・鎖のマークは2種類あり、通常の鎖(画像のもの)はその項目を共通の切り口としてデータソースがブレンドされている状態を表します。
・もう一つは鎖に斜線が入っているマークで、それは共通の切り口として認識はしているが、その項目でブレンド自体はされていない状態を表します。
・基本的に項目名で判断されます。名前が違う場合も手動で紐づけは可能です。

1.3 データソースの追加の方法
複数のデータをTableauで利用する場合には、大きく次の2通りがある。
ブレンドでは別々のTableauデータソースが必要のため①を。一方、通常のリレーションシップや結合は1つのTableauデータソース内で設定するため②の方法を使うのが一般的である。
①新しいTableauデータソースとして追加する
データ → 新しいデータソース

→ 2つを「別々のデータソース」として扱う
→ 必要ならワークシート上でブレンドして使う
②既存のTableauデータソースに新しい接続を追加する
既存データソースに接続を追加(+ボタンを押す)

→ 2つを「1つのデータソースの中」に入れる
→ データソース画面でリレーションシップや結合をする
2 それぞれのデータの集計のされ方の違い
2.1 利用するデータ
違いを理解するため、簡単な売上データと目標データを用意
売上データ

目標データ

今回やりたいことは、1月のカテゴリ単位での売上と目標を集計したい要件だとします
2.2 結合の場合
・1月の売上データの家具カテゴリは2レコードあるため、目標データの1月、家具のデータも2レコードに増幅される

・よって、1月のカテゴリ別の売上と目標は以下の通りとなり、家具の目標が本来の500から1000に増えてしまっている。この場合は、SUM(目標)ではなく、MAX(目標)等で本来の500を意図的に出す必要がある。最初に記載した行を先にくっつけてから集計というのはこのイメージである。
(なお、今回は複製された値が同一なのでこの方法が取れたが、そうではないこともあるので常にMAXで良い訳ではない)。
2.3 リレーションシップの場合
・表をドラッグ(必要に応じて紐づける項目を指定する)

・リレーションシップの場合、テーブルの粒度を保ったまま集計してくれるので結合の様に1つのテーブルにはならず、もともとのテーブル(売上、目標)のままの見た目になる(下図の様なイメージ)

・先ほどの結合とは異なり、家具の目標が想定通り500で表示されている。リレーションシップの場合、Tableauが別々の論理テーブルの粒度に合わせて必要なクエリを発行して集計してくれる。

2.4 ブレンドの場合
・これまでと少し異なり、1.3 データソースの追加の方法で記載した通り、ブレンドはデータソースが分かれている前提のため、売上と目標がTableau上で別々のデータソースとして登録されている状態がスタートとなる

・ブレンドの項目はTableauが自動で判断してくれる(今回は想定通り、カテゴリと月に鎖マークがある)

・ブレンドでも想定通りの結果が表示される。ブレンドは先に別々のデータを集計してから、今回のVizでは月とカテゴリを使用しているので売上と目標を月とカテゴリ単位で集計して(売上 1月:家具は300、家電は300といった形。目標はそれぞれ1行のためそのまま)、想定通りの結果が出る。

2.5 結合、リレーションシップ、ブレンドの使い分け
使い分けの大きな考え方として
結合:1つの表にしても問題ないデータを物理的に統合したい場合
リレーションシップ:異なる粒度のテーブルを粒度を保ったまま分析したい場合
ブレンド:別データソースのまま、集計結果を組み合わせたい場合
と言えるが、もう少しわかりやすく実践的な考え方に自分なりに翻訳すると
・基本はリレーションシップで問題ない。
ただし、複数テーブルの粒度が揃っていることが解っていて1つのテーブル、行として取り扱った方が解りやすい場合は結合を組み合わせて使う
また、ブレンドはデータソースが分かれており(例えば、1つはServerのデータソース、もう1つはローカルのExcelファイルがデータソースのもの)、物理的にデータソースを1つに統合できないケースといった場合に使う
という理解をしています。
※なお、2026.2以降はパブリッシュ済みデータソース同士もRelationshipを設定できるようになっていらしいので必ずこうするというよりは一般的な考え方として記載しています。
3.抽出フィルター、データソースフィルターの操作方法と違い
Ordでも実際に操作することが無いため、改めて復習も兼ねて整理してみました。
3.1 クエリパイプライン
まず、クエリパイプラインですが、以下の通りの順番であり、抽出フィルターとデータソースフィルターは、1番目と2番目にかかるフィルターだとわかります。

3.2 具体的なイメージ
抽出フィルターは、Tableau側で保存するデータを減らすためのフィルターで、hyperに取り込まれない。
一方、抽出接続の場合、データソースフィルターはhyperには取り込まれているけど、シートの可視化に利用するデータソース自体にフィルターがかかるため、そのデータソースを利用するシートからはフィルターしたデータは除外されるという理解をしています。
元データ
100万行
│
│ ① 抽出フィルター(ライブ接続除く)
│ 例:2024年以降だけ
▼
Tableau Extract (.hyper)
30万行
│
│ ② データソースフィルター
│ 例:関東だけ
▼
分析で利用可能なデータ
10万行
│
│ ③ コンテキストフィルター
▼
│ ④ ディメンションフィルター
▼
│ ⑤ メジャーフィルター
▼
ビュー
3.3 具体的な操作方法(抽出フィルター)
②「編集」を押して、「フィルター」から対象のフィールドを選択

3.4 具体的な操作方法(データソースフィルター)
以上、同じような点で理解が曖昧な方の参考になれば幸いです。







