※注意)弊社代表の独断と偏見です。
Tableau(タブロー)のWINDOW_SUMとLOOKUPの使い方を理解しながらZチャートを作成してみた
今回のテーマ
本日も、モヤモヤする関数(モヤ関)の代表格であるWINDOW_SUMとLOOKUPを題材にZチャートを作りながらその2つの関数の挙動を理解してみます。Zチャートについては、すでにできる100の新法則 Tableau タブロー ビジュアルWeb分析 データを収益に変えるマーケターの武器 できる100の新法則シリーズで手順(新法則の100)で詳しく紹介されておりますので、ぜひ、そちらもあわせてご覧ください!
なお、弊社企画のセミナー講義中でも多くの受講生がこの関数で戸惑うことが多かったので、一度、こちらの記事で整理しておきます。
目次)
- WINDOW_SUMのオフセット時の挙動
- LOOKUPのオフセット0の時の挙動を確認
- DATEDIFF( )の挙動を確認してみる
- Zチャートの完成
1. WINDOW_SUM()のオフセット時の挙動
WINDOW_SUM(計算式, 開始, 終了) をひとことで言うと、指定された範囲(開始、終了)にある値の計算値を返します。実は、単純です。しかし、WINDOW_SUM(SUM(売上),-11,0)と書かれたりすると途端に思考が止まってしまいますよね。-11ってどこだ? 0ってどこだよ。という感じですよね。
前提)
0:現在位置を表す
-11:そこから11遡る
そんなイメージで、まずはざっくりとらえてください。
◇ WINDOW_SUM(SUM([売上]),-2,0)
こんな式を作ってみてください。
予想は、現在位置からみて-2遡った範囲を合計する、そして、遡る方向は、表計算方向に従う。
そんな結果になるはずです。
早速、確認してみましょう。
例1)-2から0の範囲はどこだ?
上段は、単なる各年の売上です。
下段は、今回のWINDOW_SUM(SUM([売上],-2,0))の式を配置しました。
現在位置:2016とした場合
-2は、2014となります。
つまり、2014 – 2016の売上合計となります。
実際に手計算した結果(54,399,562 + 62,020,935 + 72,884,966 = 1,893,055,463)と同じはずです。
WINDOW_SUM()に関しては、計算方向性とその時の範囲を認識できれば自在に扱えるはずです!
実際に、Zチャート部分の上方パーツを算出するときに使います。
2. LOOKUPのオフセット0の時の挙動を確認する
LOOKUPの基本概念と基本動作については、こちらを参照(LOOKUP項目)ください。
基本動作を説明しております。
本日は、Zチャートを作る上で理解が必要な、LOOKUP(MIN(オーダー日),0) の挙動を確認します。
まずは、同じように計算フィールドを作ってみます。
この時の挙動は、現在位置で、もっとも日付の若いオーダー日を取得するはずです。
例)LOOKUP(MIN([オーダー日],0)) この0はなんだ?
現在値 = 現在評価対象となっている位置
結果は、各月のもっとも若い日付が取得されました。
つまり、0を指定したことにより、現在位置での評価がなされております。
こちらの関数は、Zチャートの日付範囲を決定する上で重要な役割を持っております。
ぜひ、この場で理解しておいてください。
3. DATEDIFF()の挙動を確認してみる
DIFFDATE(”日付形式”, 日付1,日付2)で日付差を算出します。
同じように計算式フィールドを作ってみましょう。
日付2 – 日付1 という計算になります。
従って、5月 – 1月 で4の正の値が返されます。
当然、負の値が返されるケースもありますので注意してください。
DATEDIFF(“month”,date(“2017/05/01”),date(“2017/01/01”)) の場合は、-4になります。
大事な点は、差分がマイナスになるのか、プラスになるのか、そこを強く認識してください。
累計パーツで利用しますので、ぜひ、しっかりと理解しておいてください。
4. Zチャートの完成
それでは、一気にZチャートを完成させてみたいと思います。
今回は、2016/01 – 2016/12の範囲でチャートを完成させます。
今まで出てきたことが理解できれば大丈夫です。
完成図)
ポイント3つ
◇日付制御フィルタ
オーダー日を使ってフィルタ(2016/01 – 2016/12)すると、Zチャートはうまく作れません。
この場合、2015/01 – 2015/12で参照する必要がある売上データもフィルタされてしまうからです。
フィルタされてしまうと、WINDOW_SUM(SUM([売上]),-11,0)で、-11遡れなくなってしまいます。
ここは、オーダー日でのフィルタを使わずに、特別に、LOOKUP(MIN([オーダー日]),0)という
計算フィールドを使いながら下記のように日付範囲指定(2016/01 – 2016/12)するとうまくいきます。
LOOKUPの計算式フィールド
この計算式フィールドを、下記のように、フィルタへ投入。
こうすることで、WINDOW_SUM([売上],-11,0)で、2015年02月から12月のデータにもアクセスできるようになります。
◇移動合計の計算式
WINDOW_SUM(SUM([売上]),-11,0)
・2016/01が現在位置の場合
そこから-11遡ります。
つまり、2015/02から2016/01までの範囲が合計されることになります。
・2016/12が現在位置の場合
そこから-11遡ります。
つまり、2016/01から2016/12までの範囲が合計されます。
ここで、累計パーツの最終地点と合流します。
◇累計の計算式
if DATEDIFF(“month”,date(“2016/01/01”),[オーダー日]) >= 0 THEN
[売上]
END
累計は、2016/01から開始できれば大丈夫です。
2016/01 – 2016/01 = 0 なので、0以上で指定します。
そして、これを簡易表計算の「累計」で利用してください。
* 繰り返しになりますが、単純に「売上」を累計にしても今回はうまくいきません。
理由はすでに述べておりますが、オーダー日のフィルタを使わずに2016/01からの累計を差分を利用して指定する必要があります。
まとめ)
今回は、WINDOW_SUMの挙動と、LOOKUP()の挙動を理解しながら
Zチャートを作成してみました。
特に、WINDOW_SUMの合計範囲をしっかり頭の中でイメージできることが大切です。
同じように、LOOKUPで指定されるオフセットが具体的にどこに該当するのか、そこを理解できると活用の幅がぐっと広がると思います。
これを機に、ぜひ、トライしてみてください!