データ結合 Tableau Prepでやってみる(第1回)

データ結合 Tableau Prepでやってみる(第1回)

行数が違うデータ結合

サンプルデータ
データ【A】 データ【B】
店舗 売上高 店舗 利益高
2017 大阪 500 2017 大阪 200
2018 大阪 1,000 2018 大阪 400
2019 大阪 1,500

 タブローでデータを結合すると妙なことになる!このような経験があります。妙なというのは具体的に、ディメンションのなかにあるはずの項目が見あたらない。メジャーの合計値が結合前と比較して増減している。もちろんタブローは結合のルールにしたがってきちんと結合しているのであります。タブローには「結合のタイプ」がいくつかあります。「結合のタイプ」による違いを理解すると、妙なことになる理由を理解できるのだろうと思います。
 サンプルデータは【A】が3行、【B】が2行です。行数の違いは【A】に2019年があり、【B】にはないことです。データの行数、ディメンションになる列の内容が違うデータです。今回は、このように行数が違うデータどうしを結合してみます。

Tableau Prepからデータへ接続

Tableau Prep データ接続 データへ接続します。データはエクセルブックに6枚のシートがあります。「表」の下に表示されている【A】【B】をフィールドへドロップします。【B】をドラッグして【A】の上に重ねると「結合」「ユニオン」があらわれるので、「結合」へドロップします。【A】を【B】へ重ねても同じです。

内部結合

Tableau Prep 内部結合 まずはTableau Prepが自動的に「結合句」を判定して「内部結合」を選択しました。

適用した結合句:【A】の「年」と【B】の「年」で結合しました。
結合タイプ:【A】と【B】の内部結合です。
結合結果のサマリー:結合句が一致している【A】の2行と【B】の2行を結合しました。【A】から1行を除外しました。

 データ結合の場面でTbaleau Prepが非常に優れているのは「結合結果のサマリー」をみるだけで、データどうしがどのように結合されているのかがパッとわかることです。これは大発明!サンプルデータは3行と2行ですが、数千・数万のデータどうしを結合したときでも一目瞭然です。

 【A】から除外された行は2019年です。結合句【A】のフィールドの2019が赤字になっています。結合結果が右下のテーブルです。【A】にあったはずの2019年がありません。これが、ディメンションのなかにあるはずの項目が消える理由です。結合前に接続していた2019年へは接続しなくなるから、メジャーの合計も減少します。売上高合計は3,000から1,500になります。
 「内部結合」は【A】と【B】の両方で一致する「結合句」の行だけに接続します。【A】にあって【B】にない2019年には接続しません。

 Tbaleau Prepで結合を実施すると「内部結合」が最初に示されます。「内部結合」では片一方のデータの一部が消えてしまうことがあるにもかかわらずです。そもそもデータを結合する目的は、売上高と利益高の関係を分析することです。つまり、売上高だけがあり利益高がないデータは分析できないよね!とういことだろうと思います。

左外部結合

Tableau Prep 左外部結合 左外部結合にします。結合タイプの変更は丸い図の部分へポインタをあててをクリックします。このあたりの操作性はTbaleau prepならではのものです。
 左側【A】に含まれる行の全てに接続します。【A】にある結合句かつ【B】にもある結合句に接続します。結果として2019年大阪の売上高に対応する利益高のデータはないからNULLになります。
 結合タイプを内部結合から左外部結合け切り替えることで、2019年の行が復活しました。

右外部結合

Tableau Prep 右外部結合 右外部結合へ切り替えました。結果は内部結合と同じになります。
 右側【B】にある結合句すべてと、かつ、【A】にもある結合句へ接続します。2019年は【A】にあっても【B】にないから接続しません。

完全外部結合

Tableau Prep 完全外部結合 完全外部結合へ切り替えました。結果は左外部結合と同じになります。
 そうなると2種類のデータの全ディメンション内容をすべて残しながら結合する方法は、
① ディメンション項目が多いほうのデータ側外部結合
② 完全外部結合
 今回のデータでは、これらのどちらかになります。

 ところが、どちらかの外部結合と完全外部結合結果が同じになるとは限りません。では、違う結果になるときとは?
Tableau Prep 左外部結合 画像のように左右両方に一致しない結合句があるときです。左右すべて一致しないときも同様です。【G】の2018年・2019年が【H】にはなく、【H】の2016年が【G】にはありません。
 左外部結合を選択すると【G】の全行へ接続します。【H】のなかに【G】と一致する結合句は2017年だけです。従って【H】の2016年へは接続しません。
Tableau Prep 完全外部結合 完全外部結合を選択すると一応は結合できます。一応というのは、このようなデータテーブルでは売上高と利益高の分析が2017年以外は不可能だからです。もともと売上高にたいする利益高が、利益高にたいする売上高がない行が多数ですから。
 それでも結合するメリットはあります。タブローから別々のデータとして接続すると分析のたびにデータソースを切り替える必要があるのですが、結合すると切り替えの必要性がなくなります。操作性のメリットがあります。
 一方でディメンションやメジャーがどちらのデータソースのものだったのか等、混乱することがデメリットです。結合句がほとんど一致しないデータのときは「ユニオン」がベストです。

その他の結合

Tableau Prep独特の結合タイプ

Tableau Prep 左の不一致のみ Tableau Prepでは、画像のように【A】だけに含まれる行に接続することが可能になりました。
Tableau Prep 不一致のみ こんなことも可能です。このような不一致の結合を行うことがあるのかどうかわかりませんが、フィルター機能として使えそうです。結合の過程で不一致になっている結合句が何で、どのくらいあるのかがすぐに見えます。

結合記号

Tableau Prep 結合 結合句をクリックすると画像のような窓が開きます。【A】【B】しれぞれの結合句を選択できます。▼をクリックすると結合記号を選択できます。通常は「=」(一致)でよいと思います。「!=」はいまのところTableau Prep独特の記号のようです。
>データ結合 Tableau Prepでやってみる(第2回)