【Tableau】データ接続の種類~完全版(たぶん)~

f:id:kaodora:20210209154135j:plain

突然ですがデータ接続うまくいってますか!
初心者の時って結局どうやって繋げばいいのかあやふやですよね。私は今もあやふやですハハハ

まずはこれを見てください!

f:id:kaodora:20210219174928j:plain
まずはこれを見て今ご自身が繋げたい状況を確認してみてください!
この記事ではそれぞれの説明をざっくりしています!概要、どんな時に?、作り方、注意点で分けています。

結合

結合とは、データを(非集計で)横に繋げるものです!

◯どんな時に?

以下のように、共通のフィールドがありそれぞれ横に繋げたい時は結合を使います。

f:id:kaodora:20210209164057p:plainf:id:kaodora:20210209164127p:plain

◯作り方

まず、注文シートをドラッグ&ドロップした後ダブルクリックをします。
それから、返品シートをドラッグ&ドロップします。
オーダーidという共通のフィールドで結合されて、「オーダーid(返品)」「返品」というフィールドが追加されます。
ビュー上では以下のように表示されます。
f:id:kaodora:20210219170729p:plain

◯結合の注意点

①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。
f:id:kaodora:20210209180003p:plain
②両方のデータは、同じファイル内になくてはいけない。
f:id:kaodora:20210209170051p:plain(こんな感じ!)
⚠︎データ同士が1:1出ない場合は、重複して計算され正しい値にならない
私はここがピンと来なくてなあなあにしてたので丁寧に説明しますね。
f:id:kaodora:20210217164213p:plain   f:id:kaodora:20210217164233p:plain
上の2つのシートを結合したいです。すると以下のようになりました。
f:id:kaodora:20210217170034p:plain
CDで結合するといちごが複数の品種と関連づけられているため、いちごの金額が2回以上カウントされています。
f:id:kaodora:20210217212336p:plain
名称ごとの金額を出すと2回カウントされているため、いちごの値段が二倍になってしまっています。
(*)この問題はFIXED計算で回避することができます。
{FIXED[名称]:MAX([目標売上])}

クロスデータベース結合

クロスデータベース結合と結合は(非集計で)横につなげるという点でほとんど同じです。違う点は、繋げるデータが同じファイル内にないという点です。

◯どんな時に?
以下のように、違うファイルのものを横に繋げたい時はクロスデータベース結合をします。ExcelCSV、データベースとExcelというようにデータ形式が違っていても結合することができます。
f:id:kaodora:20210217213416p:plainf:id:kaodora:20210217213438p:plain

◯作り方

まず、シートをドラッグ&ドロップした後ダブルクリックをします。
それから、繋げたいシートをドラッグ&ドロップします。
CDという共通のフィールドで結合されて、「出荷日」「品種」というフィールドが追加されます。
または、追加をクリックしてファイルを選択することができます。
f:id:kaodora:20210217214618p:plain
ビュー上では以下のように表示されます。
f:id:kaodora:20210219170729p:plain 

◯クロスデータベース結合の注意点

結合の注意点と同じ内容なので詳細は割愛させていただきます!
①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。
②データ同士が1:1出ない場合は、重複して計算され正しい値にならない

   データブレンド

データブレンドとは、複数のデータをそれぞれ集計してから横に繋げるものです。同じファイルにあっても、違うファイルにあってもデータブレンドは可能です。結合、クロスデータベース結合との違いは、集計してから繋げるか一つ一つを(非集計で)繋げるかです。
なんだかよくわからないなぁf:id:kaodora:20201126222438p:plain
とここでつまずかれる方多いのではないのでしょうか!丁寧すぎるくらいご説明します😤

結合とデータブレンドの違い

結合とデータブレンドの違いは一言で言えば
繋がってから集計する→結合
集計してから繋がる→データブレンドです!
以下のようなファイルを繋げたいとします。
f:id:kaodora:20210217222733p:plain f:id:kaodora:20210217222754p:plain
これを結合すると、非集計で繋げるということになります!以下は結合した結果です。先ほど、結合の注意点としてデータ同士が1:1出なければ複数カウントされてしまうのでしたね。これも、目標売上が複数カウントされていますので、間違った結果になります。
f:id:kaodora:20210217222946p:plain
目標売上と売上を並べると、複数カウントされている分目標売上の数字が間違ったものになっていますね。
f:id:kaodora:20210217224029p:plain
ではここでデータブレンドしてみましょう。データブレンドはそれぞれ集計してからくっつくのでした。
f:id:kaodora:20210217225359j:plain
目標売上と売上を並べると、正しい数字になりました!
f:id:kaodora:20210217225503p:plain

あれ!データブレンドの方がいいことづくめじゃない!?f:id:kaodora:20210105133034p:plain
そう思いがちですが、良し悪しなので違いをしっかり抑えましょう〜!

f:id:kaodora:20210217233245j:plain

ではデータブレンドの話に戻ります!
◯どんな時に?
上の例のように粒度が違うデータを結合するとき!逆に言えば、一個一個繋ぐことができない時。
f:id:kaodora:20210217222733p:plain f:id:kaodora:20210217222754p:plain
◯作り方

f:id:kaodora:20210217234847p:plainをクリックして、新しいデータソースを追加します。
 ②

シートを開いて、ファイルをドラッグ&ドロップします。
(データソースの編集画面でドラッグ&ドロップすると結合になってしまう)
ビュー上では以下のように表示されます。
f:id:kaodora:20210219171148p:plain

◯データブレンドの注意点

①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。また、シートごとにどのデータを繋げるか選択することができ、この点でデータブレンドは柔軟であると言えます。
共通のフィールドが鎖で繋がれていることを確認してから使いましょう→f:id:kaodora:20210218002034p:plain
鎖が繋がれていない状態で複数のデータを使うと以下のような警告が出ます。
f:id:kaodora:20210218002244p:plain
フィールド名が同じであれば、自動的に鎖は繋がりますが、異なる場合は自分で設定する必要があります。

  1. フィールド名を揃える

  2. ブレンドリレーションシップの編集をする

    [データ]→[ブレンドリレーションシップの編集]から編集する。

②左外部結合しかすることができない。よって、右側にしかないデータは結果に出てきません。プライマリデータソースに対してセカンダリデータソースが左外部結合します。
f:id:kaodora:20210218000623j:plain
プライマリとセカンダリってどうやって決まるの?
というところですが、フィールドに入れた順です。下の動画を見てください。


セカンダリデータソースのディメンションでフィルターをかけると内部結合と同じ結果になる。

④非集計の値を扱うことはできない

⑤非集計で計算することはできない
f:id:kaodora:20210218003115p:plain
ここまでくると当たり前のような気もしますが、集計されてからくっついているデータブレンドでは非集計(1行単位)にバラして計算することはできません。
集計と非集計の定義が曖昧な方は確認してください〜

リレーションシップ

「なんか最近出たらしい便利そうなやつ」というイメージとは今日でおさらばしましょう!👋
f:id:kaodora:20210218152050p:plain   f:id:kaodora:20210218152246p:plain
リレーションシップはその形から「Noodle」と呼んでいる人がいるそうです。(突然の余談)
同じファイルにあっても、違うファイルにあってもデータブレンドは可能です。

f:id:kaodora:20210217222733p:plain f:id:kaodora:20210217222754p:plain
上のデータをリレーションシップしてみましょう。以下のようになりました。f:id:kaodora:20210218153605p:plain
リレーションシップの編集を見ればわかるように、結合を指定しなくてもTableauが適切な結合を考えてくれます。(f:id:kaodora:20210130012750p:plainこういうやつ)
そして、表を見ればわかるようにそれぞれの表は独立し、先に結合表を作りません

今までの結合では以下のような結合表を作り、
f:id:kaodora:20210217222946p:plain
目標売上と売上を並べると、複数カウントされている分目標売上の数字が間違ったものになりましたね。
f:id:kaodora:20210217224029p:plain

しかし、リレーションシップでは重複行をカウントせず正しい数字を出すことができます!
f:id:kaodora:20210218155630p:plain

では、リレーションシップでは結合を選択しないと言いましたが、外部結合はどうでしょうか。
f:id:kaodora:20210217222733p:plain  f:id:kaodora:20210218172737p:plain
データブレンドでは左結合しかできないため、この場合以下のようにぶどうは表示されません。
f:id:kaodora:20210218155630p:plain
しかし、リレーションシップでが以下のようにぶどうが表示され(目標金額はないので空欄となる)外部結合をすることができます。

f:id:kaodora:20210218173156p:plain

また、現在のビジュアライゼーションで使用されているフィールドを持つテーブルのデータに対してのみ、クエリが実行されます。
要はTableauが適切な結合を考えてくれる便利な接続方法
です。

◯どんな時に?

結合やデータブレンドと同じようにデータを横に繋げたい時です。
集計されてから繋がるというわけではないという点結合に近いですが、重複行をカウントしないという点ではデータブレンドに近いですね。データブレンドでは、LOD計算できなけどリレーションシップではできるし。
なんのこっちゃ。結合とデータブレンドのいいとこどりですね。f:id:kaodora:20210218220312p:plain
複数のデータを繋げたい時、まずはリレーションシップを検討してみましょう。
逆に!リレーションシップでない方がいい時はどんな時でしょうか。

両方のテーブルに存在するレコードのみを分析対象にしたい時→結合
結合なら最初にINNER JOINするだけで済みますが、リレーションだとフィルターを追加する必要があります。

地理的データを使って複数のジオメトリを重ねたい時→結合
リレーションではIntersectsを指定できません。

TableauServer/Onlineにパブリッシュされたデータソースを使用する時ブレンド
パブリッシュされたデータソースは別のデータソースの中に論理テーブルとして追加することができず、リレーションを組むことができません。

(*)また、リレーションは結合粒度を最初に指定するので、シート上でそれを変更することができません。​ブレンドはマージする粒度をシートごとに変えたり、リンクフィールドに計算式を指定したり出来るので、そのあたりの柔軟性があるとも言えます。

(出典:https://community.tableau.com/s/group/0F94T000000gQZwSAM/japan)​

◯作り方

データソース編集画面にシートをドラッグ&ドロップします。
それから、繋げたいシートをドラッグ&ドロップします。それから共通のフィールドを指定します。
以下のようにシートはそれぞれ独立しています。

ビュー上ではこのように表示されます。
f:id:kaodora:20210219170541p:plain
◯リレーションシップの注意点

①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。
TableauServer/Onlineにパブリッシュされたデータソースを編集することはできません。

ユニオン

ユニオンとは、ずばりデータを縦に繋げるものです!

◯どんな時に?
以下のように、データの項目は同じで
同じブック内で、年や月でシートが分かれているデータはありませんか。
この場合は年が違うだけですので、縦に繋げたいところですよね。
ここでユニオンを使います。
f:id:kaodora:20210209135833p:plainf:id:kaodora:20210209135915p:plain
Tableauに入れるとこんな感じになります。
f:id:kaodora:20210209140846p:plain

◯作り方

f:id:kaodora:20210209144038p:plain
ユニオンにすると、「Sheet」「Tablea Name」というフィールドが自動的に作成されます。
作成されたユニオンをダブルクリックして、さらに▼をクリックすると「ユニオンの編集」から編集することができます。

◯ユニオンの注意点
①両方のデータは、同じファイル内になくてはいけない。f:id:kaodora:20210209142340p:plain(こんな感じ!)
②両方のデータは、フィールド名が同じでなくてはいけない。データの型は同じでなくてはならない。
*しかし、もし以下のように違っていても、「一致していないフィールドをマージ」することで解決することもできます。
f:id:kaodora:20210209142842p:plain

f:id:kaodora:20210209142858p:plain
ここでは、注文日とオーダー日というようにフィールド名が違いますね。
しかし、同じ内容なのでマージしたいと思います。

一つのフィールドにすることができました!ヤッタネ。