目次
はじめに
こんにちは、okkunです。
今回は表題にもある通り、メジャーの一部カラムを縦持ちにする方法について書いていきます。まずは以下のSampleデータの画像をご覧ください。
このデータのうち黄色の15項目を「経費」としてまとめて集計してほしい、との要望がありました。ただ、後々ダッシュボードで経費項目それぞれの金額を可視化したい、とのこと。
なるほど、単純に15項目を足してフィールドを作成すると、「通勤費」や「福利厚生費」といった経費の細分化ができなくなりますね…。
かといって単純にピボットだけすると、Excel右側の「粗利」と「損益」が15倍になる、という現象が起きてしまいます…。
解決するには
さて、というわけで上記の問題を解決していきます。が、ターゲットではない「粗利」「損益」についてはちょっと処理がややこしい。どういうことか。
簡単なデータを用いて解説します。
例えば、横持ちデータに「購入金額(青)」とは別に「各顧客の1年の合計購入数(橙)」のデータが存在するとします。これを縦持ちデータに変えると、赤枠線が示すように12か月分すべてに同じ値が配置されます。
ここで、この店舗で1年間に売れた商品数が知りたいです。求めるには…
- 横持ちデータの場合:単純にsum
- 縦持ちデータの場合:sumした後、縦持ちに変換した項目の数(今は12)で割る
このデータの場合は、1月~12月までの12項目を横持ちデータ→縦持ちデータにした時に、12で除算する、という計算が必要になります。
と、いうわけで。メジャーが複数項目存在する場合は、単純にピボットすれば良いわけではなく、縦持ちデータにする必要が無かった他のメジャーを「つじつま合わせ」する必要があります。
この手順、Tableauでは以下2つのアプローチ法があるので、それぞれ分けて紹介します。
解決策① -Tableau Prep編-
手順は以下になります。
ⅱ. Tableau Prepにて、経費以外のメジャーを経費項目数で割る
ⅰ. 一部のカラムを縦持ちデータに変える(ピボットする)
①まずはデータをTableau Prepに取り込み、データ型を確認します。
②ピボットのステップを作成し、[設定]タブ から、経費15項目を「ピボットされたフィールド」へドラッグ&ドロップで移動します。
③ピボット1の名前→経費項目、ピボット1の値→経費 に変更します。(名前はダブルクリックで編集できるようになります。)
ⅱ. 経費以外のメジャーを経費項目数で割る
①クリーニングステップを作成し、 [計算フィールドの作成] から、以下の数式を記載して [保存]を押下します 。
フィールド名:経費項目数 数式:{FIXED: COUNTD([経費項目])}
②再度 [計算フィールドの作成] から、「粗利」と「損益」を①の「経費項目数」で割る計算式を記載します。
③経費項目数のフィールドはこの先使用しないため削除します。
ⅲ. 数値を確認する
①まずはTableau Prep で「集計」フィールドを作成して、粗利、損益、経費を集計フィールドにドラッグしました。
②エクセルで損益、粗利、経費を集計してみました。その結果、Tableau Prepでの集計値とExcelでの集計値が一致していることがわかります。(比較しやすいように、Tableau PrepでROUND関数を用いて数値を四捨五入しました。)
解決策② -Tableau Desktop編-
手順は以下になります。
ⅱ. Tableau Desktopにて、経費以外のメジャーを平均する
ⅰ. 一部のカラムを縦持ちデータに変える(ピボットする)
解決策① -Tableau Prep編- と同様です。手順③が終了したら、データを出力しましょう。
ⅱ. 経費以外のメジャーを平均する
①Tableau Desktopにデータを接続したら、計算フィールドで以下の数式を作成して終わりです。※「経費項目」以外のディメンションをFIXED内に挿入します。
フィールド名:粗利_AVG 数式:SUM({FIXED [顧客コード],[顧客名],[担当部署]:AVG([粗利])})
フィールド名:損益_AVG 数式:SUM({FIXED [顧客コード],[顧客名],[担当部署]:AVG([損益])})
ⅲ. 数値を確認する
①Prep編と同様、集計値を比較してみます。その結果、Tableau Desktopでの集計値とExcelでの集計値が一致していることがわかります。
おわりに
今回は、Tableau Prepでメジャーの一部カラムを縦持ちにする方法を紹介しました。
データをただ単純にピボットするだけでは解決しない!!という時に、本記事の内容をお役立ていただけると幸いです。