パーティションごとに異なるメジャーを表示する

2016/08/29 16:50 Keiko 1 Comments

こんにちは、Keikoです。Tableau社内では古株ですが、このブログに投稿するのは初めてですね。これからよろしくお願いします。

本日は、最近何度かお客様からお問い合わせがあった、「パーティションごとに異なるメジャーを表示する」方法を解説したいと思います。言葉だけだとイメージが沸きにくいと思いますが、以下のイメージです。



パーティション1には売上が、パーティション2には利益の集計が表示されています。さらに、それぞれ、パーティションごとにSUMをした場合とAVGをした場合に分かれています。

「…ん?それって解説するほどのこと?簡単じゃない??」

と思った方は、ある程度Tableauを触ってくださっている方ですね!その場合は、以下の前提条件を考えてみてください。

・ オーダーID順に、Tableau内のINDEX関数を使って [index] が振られている
・ indexが1から10までを「パーティション1」、11から20までを「パーティション2」と、Tableau内のIF文で区切る

つまり、ディメンション [パーティション] と [index] は、元のデータソースには存在しません。ここで難易度がぐっと上がるので、腕に覚えのある皆様はここで一度読むのを止めて、是非チャレンジしてみてください。



ステップ1

まずは、各パーティションごとに必要な集計値を取得するところから始めます。




売上用の計算フィールドと利益用の計算フィールドの2つを作成します。計算式は以下の通りです。






この2つをビューに表示させると、このようになります。





ステップ2


続いて、ステップ1で作成した計算フィールド2つをまとめて表示したいので、さらにもう1つ計算フィールドを作成します。




これをビューに追加してみましょう。




パーティションごとに2つの異なるメジャーを表示することができました!
(この [パーティションごと] 計算フィールドは理解しやすくするためのものなので、実際には作成しなくても問題ありません。)



ステップ3

ゴールまでもう一息!
パーティションごとに合計(今回は小計)するための計算フィールドと、平均するための計算フィールドを、同様に作成します。

ここでつまずきポイントが1つ。
以下のように普通にSUMしようと思ったら、エラーが出てしまいます。



これは、 [パーティション1_売上] と [パーティション2_利益] は、それ自体の計算式の中ですでに集計されているからですね。
Tableauでは、「集計の集計」はできません。


ですので、こうします。



表計算関数のWINDOW_SUMです。
Tableauでは従来の集計関数(sum, avgなど)が処理された後に表計算関数(window_xx)が処理されるため、この計算式が可能になります。

パーティションごとの平均も同様に…。





これをビューに追加して完成です!





まとめ

いかがでしたでしょうか。説明のために色々と書きましたが、やっていることは以下の2つのみです。

1. 各メジャーごとに1つずつ計算フィールドを作成する
2. それらをWINDOW_xx関数を使ってまとめる


一見、「IF文・CASE文で場合分けすれば一発でしょ?」とか、「LODでFIXEDすれば出るでしょ?」と思いがちですが、ここで前提条件の「ディメンション [パーティション] と [index] は、元のデータソースには存在しない」という点がネックになってきます。
この点を説明した「NG」シートもワークブックに作成してありますので、是非ダウンロードして中身を確認してくださいね。

ワークブックのダウンロードはこちらから!


1 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除