【Tableau】データ接続の種類~完全版(たぶん)~
突然ですがデータ接続うまくいってますか!
初心者の時って結局どうやって繋げばいいのかあやふやですよね。私は今もあやふやですハハハ
まずはこれを見てください!
まずはこれを見て今ご自身が繋げたい状況を確認してみてください!
この記事ではそれぞれの説明をざっくりしています!概要、どんな時に?、作り方、注意点で分けています。
結合
結合とは、データを(非集計で)横に繋げるものです!
◯どんな時に?
以下のように、共通のフィールドがありそれぞれ横に繋げたい時は結合を使います。
◯作り方
— 動画掲載用 (@Kaodoramichan) 2021年2月17日
まず、注文シートをドラッグ&ドロップした後ダブルクリックをします。
それから、返品シートをドラッグ&ドロップします。
オーダーidという共通のフィールドで結合されて、「オーダーid(返品)」「返品」というフィールドが追加されます。
ビュー上では以下のように表示されます。
◯結合の注意点
①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。
②両方のデータは、同じファイル内になくてはいけない。
(こんな感じ!)
③⚠︎データ同士が1:1出ない場合は、重複して計算され正しい値にならない
私はここがピンと来なくてなあなあにしてたので丁寧に説明しますね。
上の2つのシートを結合したいです。すると以下のようになりました。
CDで結合するといちごが複数の品種と関連づけられているため、いちごの金額が2回以上カウントされています。
名称ごとの金額を出すと2回カウントされているため、いちごの値段が二倍になってしまっています。
(*)この問題はFIXED計算で回避することができます。
{FIXED[名称]:MAX([目標売上])}
クロスデータベース結合
クロスデータベース結合と結合は(非集計で)横につなげるという点でほとんど同じです。違う点は、繋げるデータが同じファイル内にないという点です。
◯どんな時に?
以下のように、違うファイルのものを横に繋げたい時はクロスデータベース結合をします。ExcelとCSV、データベースとExcelというようにデータ形式が違っていても結合することができます。
◯作り方
クロスデータベース結合 pic.twitter.com/jI9OCIgUs6
— 動画掲載用 (@Kaodoramichan) 2021年2月17日
まず、シートをドラッグ&ドロップした後ダブルクリックをします。
それから、繋げたいシートをドラッグ&ドロップします。
CDという共通のフィールドで結合されて、「出荷日」「品種」というフィールドが追加されます。
または、追加をクリックしてファイルを選択することができます。
ビュー上では以下のように表示されます。
◯クロスデータベース結合の注意点
結合の注意点と同じ内容なので詳細は割愛させていただきます!
①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。
②データ同士が1:1出ない場合は、重複して計算され正しい値にならない
データブレンド
データブレンドとは、複数のデータをそれぞれ集計してから横に繋げるものです。同じファイルにあっても、違うファイルにあってもデータブレンドは可能です。結合、クロスデータベース結合との違いは、集計してから繋げるか一つ一つを(非集計で)繋げるかです。
なんだかよくわからないなぁ
とここでつまずかれる方多いのではないのでしょうか!丁寧すぎるくらいご説明します😤
結合とデータブレンドの違い
結合とデータブレンドの違いは一言で言えば
繋がってから集計する→結合
集計してから繋がる→データブレンドです!
以下のようなファイルを繋げたいとします。
これを結合すると、非集計で繋げるということになります!以下は結合した結果です。先ほど、結合の注意点としてデータ同士が1:1出なければ複数カウントされてしまうのでしたね。これも、目標売上が複数カウントされていますので、間違った結果になります。
目標売上と売上を並べると、複数カウントされている分目標売上の数字が間違ったものになっていますね。
ではここでデータブレンドしてみましょう。データブレンドはそれぞれ集計してからくっつくのでした。
目標売上と売上を並べると、正しい数字になりました!
あれ!データブレンドの方がいいことづくめじゃない!?
そう思いがちですが、良し悪しなので違いをしっかり抑えましょう〜!
ではデータブレンドの話に戻ります!
◯どんな時に?
上の例のように粒度が違うデータを結合するとき!逆に言えば、一個一個繋ぐことができない時。
◯作り方
①
データブレンド pic.twitter.com/DbdhwlaPp6
— 動画掲載用 (@Kaodoramichan) 2021年2月17日
をクリックして、新しいデータソースを追加します。
②
データブレンド② pic.twitter.com/R0K58gTUqK
— 動画掲載用 (@Kaodoramichan) 2021年2月17日
シートを開いて、ファイルをドラッグ&ドロップします。
(データソースの編集画面でドラッグ&ドロップすると結合になってしまう)
ビュー上では以下のように表示されます。
◯データブレンドの注意点
①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。また、シートごとにどのデータを繋げるか選択することができ、この点でデータブレンドは柔軟であると言えます。
共通のフィールドが鎖で繋がれていることを確認してから使いましょう→
鎖が繋がれていない状態で複数のデータを使うと以下のような警告が出ます。
フィールド名が同じであれば、自動的に鎖は繋がりますが、異なる場合は自分で設定する必要があります。
- フィールド名を揃える
フィールド名を揃える pic.twitter.com/StLqMUIHdr
— 動画掲載用 (@Kaodoramichan) 2021年2月17日 - ブレンドリレーションシップの編集をする
ブレンドリレーションシップの編集をする pic.twitter.com/W0QNCJmT6e
— 動画掲載用 (@Kaodoramichan) 2021年2月17日[データ]→[ブレンドリレーションシップの編集]から編集する。
②左外部結合しかすることができない。よって、右側にしかないデータは結果に出てきません。プライマリデータソースに対してセカンダリデータソースが左外部結合します。
プライマリとセカンダリってどうやって決まるの?
というところですが、フィールドに入れた順です。下の動画を見てください。
プライマリとセカンダリ pic.twitter.com/Ah8IyAwTDL
— 動画掲載用 (@Kaodoramichan) 2021年2月17日
③セカンダリデータソースのディメンションでフィルターをかけると内部結合と同じ結果になる。
④非集計の値を扱うことはできない
⑤非集計で計算することはできない
ここまでくると当たり前のような気もしますが、集計されてからくっついているデータブレンドでは非集計(1行単位)にバラして計算することはできません。
集計と非集計の定義が曖昧な方は確認してください〜
リレーションシップ
「なんか最近出たらしい便利そうなやつ」というイメージとは今日でおさらばしましょう!👋
リレーションシップはその形から「Noodle」と呼んでいる人がいるそうです。(突然の余談)
同じファイルにあっても、違うファイルにあってもデータブレンドは可能です。
上のデータをリレーションシップしてみましょう。以下のようになりました。
リレーションシップの編集を見ればわかるように、結合を指定しなくてもTableauが適切な結合を考えてくれます。(こういうやつ)
そして、表を見ればわかるようにそれぞれの表は独立し、先に結合表を作りません。
今までの結合では以下のような結合表を作り、
目標売上と売上を並べると、複数カウントされている分目標売上の数字が間違ったものになりましたね。
しかし、リレーションシップでは重複行をカウントせず正しい数字を出すことができます!
では、リレーションシップでは結合を選択しないと言いましたが、外部結合はどうでしょうか。
データブレンドでは左結合しかできないため、この場合以下のようにぶどうは表示されません。
しかし、リレーションシップでが以下のようにぶどうが表示され(目標金額はないので空欄となる)外部結合をすることができます。
また、現在のビジュアライゼーションで使用されているフィールドを持つテーブルのデータに対してのみ、クエリが実行されます。
要はTableauが適切な結合を考えてくれる便利な接続方法です。
◯どんな時に?
結合やデータブレンドと同じようにデータを横に繋げたい時です。
集計されてから繋がるというわけではないという点結合に近いですが、重複行をカウントしないという点ではデータブレンドに近いですね。データブレンドでは、LOD計算できなけどリレーションシップではできるし。
なんのこっちゃ。結合とデータブレンドのいいとこどりですね。
複数のデータを繋げたい時、まずはリレーションシップを検討してみましょう。
逆に!リレーションシップでない方がいい時はどんな時でしょうか。
①両方のテーブルに存在するレコードのみを分析対象にしたい時→結合
結合なら最初にINNER JOINするだけで済みますが、リレーションだとフィルターを追加する必要があります。
②地理的データを使って複数のジオメトリを重ねたい時→結合
リレーションではIntersectsを指定できません。
③TableauServer/Onlineにパブリッシュされたデータソースを使用する時→ブレンド
パブリッシュされたデータソースは別のデータソースの中に論理テーブルとして追加することができず、リレーションを組むことができません。
(*)また、リレーションは結合粒度を最初に指定するので、シート上でそれを変更することができません。ブレンドはマージする粒度をシートごとに変えたり、リンクフィールドに計算式を指定したり出来るので、そのあたりの柔軟性があるとも言えます。
(出典:https://community.tableau.com/s/group/0F94T000000gQZwSAM/japan)
◯作り方
リレーションシップ pic.twitter.com/L9ENeK8pqm
— 動画掲載用 (@Kaodoramichan) 2021年2月19日
データソース編集画面にシートをドラッグ&ドロップします。
それから、繋げたいシートをドラッグ&ドロップします。それから共通のフィールドを指定します。
以下のようにシートはそれぞれ独立しています。
シートはそれぞれ独立している。 pic.twitter.com/QtTH7Fegr1
— 動画掲載用 (@Kaodoramichan) 2021年2月19日
ビュー上ではこのように表示されます。
◯リレーションシップの注意点
①両方のデータに共通のフィールドがなくてはいけない。(自分で指定することも可能)
データの型は同じでなくてはならない。
②TableauServer/Onlineにパブリッシュされたデータソースを編集することはできません。
ユニオン
ユニオンとは、ずばりデータを縦に繋げるものです!
◯どんな時に?
以下のように、データの項目は同じで
同じブック内で、年や月でシートが分かれているデータはありませんか。
この場合は年が違うだけですので、縦に繋げたいところですよね。
ここでユニオンを使います。
Tableauに入れるとこんな感じになります。
◯作り方
①
ユニオンの作り方① pic.twitter.com/fy0SKMYH6M
— 動画掲載用 (@Kaodoramichan) 2021年2月9日
②
ユニオンの作り方② pic.twitter.com/Z3qjHo3R9X
— 動画掲載用 (@Kaodoramichan) 2021年2月9日
ユニオンにすると、「Sheet」「Tablea Name」というフィールドが自動的に作成されます。
作成されたユニオンをダブルクリックして、さらに▼をクリックすると「ユニオンの編集」から編集することができます。
◯ユニオンの注意点
①両方のデータは、同じファイル内になくてはいけない。(こんな感じ!)
②両方のデータは、フィールド名が同じでなくてはいけない。データの型は同じでなくてはならない。
*しかし、もし以下のように違っていても、「一致していないフィールドをマージ」することで解決することもできます。
ここでは、注文日とオーダー日というようにフィールド名が違いますね。
しかし、同じ内容なのでマージしたいと思います。
一致していないフィールドをマージ pic.twitter.com/k4QYQKYASU
— 動画掲載用 (@Kaodoramichan) 2021年2月9日
一つのフィールドにすることができました!ヤッタネ。