Tableau 結合まとめ
DATA Saberで学んだ結合部分について、以下にまとめました。
Tableauでデータを合わせる方法
結合(JOIN)
データブレンド
クロスデータベース結合
リレーションシップ
結合(JOIN)とは
あるキー項目を使って1行単位でくっつける方法です。
例えばこちらの商品情報が入ったmasterテーブルと、商品の売上情報が入ったfactテーブルがあります(chatGPTに作成してもらいました)。
これらをProductをキーとして結合(JOIN)すると、以下のような一つの大きなテーブルになります。
結合時の注意点としては、データ同士が1:1でない場合は正しい値が表示されないということです。
例えばmasterテーブルを見るとAppleの単価は100円ですが、下のグラフのように商品ごとの単価を見ようとすると、Appleは300円になってしまいます。
これは結合したfactテーブルでAppleが3回出現しているため、3回分のAppleが計算されてしまったことによるものです。
この場合は計算フィールドで{FIXED [Product]: MAX([Price])}とすることで、正しい値が表示されます。
どんな時に使う?
同じデータベースにある場合
粒度が同じ場合 = 1行ずつ繋ぐことができる場合
ブレンドとは
集計してからくっつける方法です。
結合と違いRIGHT JOIN / LEFT JOIN / INNER JOINなどを選択できず、全てLEFT JOINになります。
LEFT JOINの特徴
左側のデータソース(プライマリデータソース)にあるものは全て表示される。
右側のデータソース(セカンダリデータソース)は、プライマリにないデータは表示されない。
プライマリにあるが、セカンダリにないデータはNULLとして表示される。
Tableau上でのプライマリ・セカンダリは、Tableauのフィールドに入れた順に決まります。
→最初にフィールドに入れたデータソースがプライマリ、次に入れたデータソースがセカンダリ。
商品の売上情報が入ったsalesテーブルと商品のproductsテーブルをTableau上でブレンドした場合、以下のようになります(プライマリ: sales / セカンダリ: products)。
プライマリのSalesの値は、全て集計されて表示されています。
プライマリにのみ存在するPineappleは、セカンダリには存在しないためNULLとなっています。
反対に、セカンダリにのみ存在するStrawberryは、プライマリには存在しないため表示されていません。
ここでAppleの「 * 」がありますね。
ブレンドは最初に書いた通り、集計してからTableau上でくっつく挙動となっています。
この集計は、数字だけでなく文字も集計されています。
プライマリから集計して取ってきた一つのAppleに対して、セカンダリにはFruitのAppleとVegetableのAppleの二つが存在しますね。
このため、Tableauからどちらを表示するかわかりません〜という意味で「 * 」と表示される仕組みになります。
ブレンドでは「 * 」となった部分を結合で見てみると、以下のようになります。
上で書いたように、結合は1行単位でくっつけてから集計しているので、Appleに対してFruitとVegetableそれぞれが結合されます。ただしその分レコードも増えるため、重複データには注意が必要でしたね。
どんな時に使う?
粒度が違うデータ同士を結合する場合 = 1行ずつ繋ぐことができない
クロスデータベース結合とは
横に繋げる点では結合とほとんど同じです。
行レベルの結合で、LOD表現も使うことができます。
違う点としては、データソース(データベース)が異なっていても結合ができることです。
Excelとcsv、データベースとExcelというようにデータの形式が異なる場合も結合が可能です。
クロスデータベース結合は、全てのデータが異なるデータベースからやってくるので負荷がかかることに注意が必要です(イメージは下の図)。
どんな時に使う?
違うデータベースにある場合
粒度が同じ場合 = 1行ずつ繋ぐことができる場合
リレーションシップとは
同じファイルでも違うファイルでもデータのブレンドが可能です。
結合で出てくるベン図はなく、線だけで結ばれているのがリレーションです(ヌードルと言われるらしい)。
リレーションは、結合の指定無しでTableauが適切な結合を考えてくれます。
最初の結合では、レコードが重複してしまうことが問題でしたが、リレーションで見てみると
重複行をカウントせずに正しい数字が表示されます!
さらに、ブレンドではLEFT JOINしかできなかったのが、Tableauのドキュメントによると
と、LEFT JOIN以外も使用できます!
どんな時に使う?
結合やブレンドと同じくデータを横に繋げたい場合
リレーションは集計してから繋がる方法ではなく、LOD計算もできるため結合に近いですが、重複行をカウントしないためブレンドにも似ています。
→ 結合とブレンドのいいとこ取り!!
しかしリレーションの使用条件は
とのことなので、Tableau Serverにパブリッシュしたデータを業務で使用する私のチームではリレーションは使用できずでした、、この場合はブレンドを使用することになります。
Tableauのデータを複数接続する方法は様々ですが、それぞれのメリット・デメリットを理解して、適切な方法を選んでいきましょう!
この記事が気に入ったらサポートをしてみませんか?