データ結合 Tableau Prepでやってみる(第2回)
一致している結合句と不一致の結合句があるとき
サンプルデータ
データ【C】 | データ【D】 | |||||||
年 | 店舗 | 売上高 | 年 | 店舗 | 利益高 | |||
2017 | 東京 | 500 | 2017 | 東京 | 200 | |||
2018 | 東京 | 1,000 | 2018 | 東京 | 400 | |||
2019 | 東京 | 1,500 | 2019 | 東京 | 600 | |||
2019 | 横浜 | 100 |
・データ【C】は年ごとの東京店の売上高です。
・データ【D】は年ごとの東京店の利益高です。
ところが【D】へ2019年の横浜店の利益高が入り込んでいます。
結合句になるであろう「年」は【C】【D】ともに2017・2018・2019で一致している。ただし【D】は2019が2行ある。そして【D】には【C】にはない「横浜」がある。
右外部結合
結合句を「年」に設定してデータ結合 Tableau Prepでやってみる(第1回)で確認したとおり行数がが多い【D】右外部結合を選択します。
すると、【C】の2019年東京店の行が2重になります。ということは、結合前の売上高合計3,000が、結合後に4,500になります。メジャー合計が増えているときはこのような結合状態になっているわけです。
完全外部結合
完全外部結合だとどうでしょうか。結果は右外部結合とおなじです。
結合句を追加する
こんなときはTableau Prepならではの機能を活用します。
「結合句の推奨事項」に「店舗=店舗」が薄いグレーで書いてあります。Tableau Prepが「店舗=店舗」を結合句に追加してみてはいかがでしょうか!こような提案をしてくれます。右側の+マークをクリックします。結合句が追加されました。
・右上部の+マークを押したときは、結合句を選択する窓が開きます。
・【C】【D】それぞれから結合句を選択すると、結合句を追加することができます。
ポチっとワンクリックで欲しかった結合状態を得ることができました。右下破線で囲まれた部分をつかえば分析が可能になります。もちろん売上高の合計は3,000のままです。
結合句「年」and結合句「店舗」になったことで左側【C】にNullが出現しました。
両方に一致しない結合句があるとき
サンプルデータ
データ【E】 | データ【F】 | ||||||
年 | 店舗 | 売上高 | 年 | 店舗 | 利益高 | ||
2017 | 名古屋 | 500 | 2017 | 名古屋 | 200 | ||
2018 | 名古屋 | 1,000 | 2018 | 名古屋 | 400 | ||
2019 | 名古屋 | 1,500 | 2020 | 名古屋 | 800 |
前回の記事で少しふれましたが、結合しようとする【E】【F】両方それぞれに一致しない結合句があるときです。
完全外部結合してみます。
【E】【F】の全行に接続できました。しかし、課題があります。①の「年」もしくは②の「年」のどちらかをディメンションに設定して分析します。ところがどちらの「年」にもNULLがあります。ディメンションにNULLがあると困ります。もちろん「店舗」もディメンションですからNULLがあると困ります。
年①のNULLを除外すると利益高800が消えます。利益高合計は1,400から800へ減少します。年②のNULLを除外すると売上高1,500が消えて、売上高合計は3,000から1,500へ減少します。メジャーのNULLがあってもよいので、とにかくすべての年とすべてのメジャーを表示したいのです・・・
ユニオンする
・【F】を【E】の上にドラッグします。
・「ユニオン」へドロップします。
ユニオンは上下(縦)のデータをくっつけます。ということは「売上高」列の下に「利益高」の数値がくっついてしまう。このような心配は無用です。
・Tableau Prepはフィールド名(列名)が同じなら上下でくっつけます。
・フィールド名(列)名が違うときは列を追加してくっつけます。
データテーブルを確認します。ディメンションになる「年」「店舗」どちらの列にもNULLはありません。これでOKです。
「年」を行シェルフへ、メジャーを列シェルフへドロップします。考えていたとおりの表になりました。