WINDOW_MAX 、WINDOW_SUMについて※Tableau※
DATA Saber - Bridge 3rdのOrd9の勉強を進めていますが、WINDOW関数とRUNNING関数がややこしくて、どっちが何ができるんだっけ??と、なんとなく調べて分かったつもりになるが5分後には忘れてしまうため、自分自身の理解と備忘録のためにまとめてみます。
WINDOW関数やRUNNING関数も調べてみると沢山あるので今回は「WINDOW_MAX」 「WINDOW_SUM」についてまとめたいと思います。
同じような悩みを持っている方の参考になったら嬉しいです。
※もし間違ってたら指摘してくれたら嬉しいです!
WINDOW_MAXについて
WINDOW_MAXについて調べるとウィンドウ内の式の最大値を返すということが記載されており、「計算式=WINDOW_MAX(expression, [start, end])」とかかれておりました。 最初読んだときに「?」でした。
自分なりに簡単に言うと
「ウィンドウ=表計算の表」のことで、
特徴1:表の中の値で最大値を返す関数である
特徴2:最大値を返す範囲や向きは自由に指定できる
ということかなと理解しています。
下記図を用いて説明すると、
①のように2020年のA~D(横)の中で最大値を返すパターンや、
②のように、Bの2020年〜2024年(縦)の中で最大値を返すパターン、
③のように、表全体から最大値を返すパターン
④のように、範囲を指定して最大値を返すパターン
などユーザーが自由に範囲や向きを指定して最大値を返すことが可能となります。

Tableauで実際に試してみた
実際にサンプルスーパーストアのデータを使って試してみました。
実験1(①のパターン)
先ほどの図の①を実施しました。
計算式 :WINDOW_MAX(SUM([売上]))
次を使用して計算:表(横)
意味:2013年の家具、家電、事務用品の中から一番高い売上を返してね

2013年は家電の売上が「14,084,755」と金額が一番大きかったので、
オレンジ点線枠には「14,084,755」が返ってきています。
同様の考え方で、2014年、2015年、2016年もその年の一番大きい金額が返ってきていることがわかりました。
実験2(②のパターン)
今度は先程の図の②を実施しました。
計算式 :WINDOW_MAX(SUM([売上]))
次を使用して計算:表(下)
意味:家具の2013年〜2016年の中から一番高い売上を返してね

家具は2015年の売上が「24,615,551」と金額が一番大きかったので、
水色点線枠には「24,615,551」が返ってきています。
同様の考え方で、家電、事務用品も一番売上が大きかった年の金額が返ってきていることがわかります。
実験3(③のパターン)
今度は先程の図の③を実施しました。
計算式 :WINDOW_MAX(SUM([売上]))
次を使用して計算:表(横から下へ)or(下から横へ)
意味:表の中から最大値を返してね

表全体の中で2016年の家電の売上が「26,949,060」と金額が一番大きかったので、緑点線枠には「26,949,060」が返ってきています。
実験4(④のパターン)
今度は先程の図の④を実施しました。
範囲を指定するために、WINDOW_MAX(SUM(売上)、範囲①、範囲②)をいれて計算式を作成します。
計算式 :WINDOW_MAX(SUM([売上]),-1,0)
次を使用して計算:表(横)
意味:1列前の売上(計算式の-1)と現在位置(計算式の0)を範囲指定して最大値を返してね。

一つ前の列と現在値を比較したときに大きい方の数値を返す計算式となりますので、
一番左の紫枠は、
「一つ前の売上:無」と 「2013年の家具の売上:13,659,370」を比較をしたときに、値の大きい「13,659,370」を返している。
真ん中の濃い紫枠は、
「2013年の家具の売上:13,659,370」と「2013年の家電の売上:14,084,755」を比較したときに、値の大きい「14,084,755」を返している。
右の薄い紫枠は、
「2013年の家電の売上:14,084,755」と「2013年の事務用品の売上:10,127,254」を比較したときに、値の大きい「14,084,755」を返している。
ということになります。
他の2014年、2015年、2016年も同様の考え方で値が返ってきています。
実験1〜4を実施してきましたが、WINDOW_MAXを理解することで、特定範囲の最大値を調査するときなどに役立つことがわかりました。
WINDOW_SUMについて
基本的にはWINDOW_MAXと同じような(最初のイメージ図参照)考え方で合計値を返す計算式のようです。
「ウィンドウ=表計算の表」のことで、
特徴1:表の中の値の合計値を返す関数である
特徴2:合計値を返す範囲や向きは自由に指定できる
ということかなと理解しています。
Tableauで実際に試してみた
実際にサンプルスーパーストアのデータを使って試してみました。
実験1(①のパターン)
計算式 :WINDOW_SUM(SUM([売上]))
次を使用して計算:表(横)
意味:2013年の家具、家電、事務用品(横)の合計(SUM)を返してね。

今回はわかりやすいように総計の列も追加しましたが、
2013年の家具、家電、事務用品の売上合計:37,871,379が返ってきていることがわかります。
同様に2014年、2015年、2016年も各年の合計値が返ってきています。
実験2(②のパターン)
計算式 :WINDOW_SUM(SUM([売上]))
次を使用して計算:表(下)
意味:各の2013年〜2016年の売上の合計(SUM)を返してね。

今回は表(下)となりますので、家具の2013年〜2016年の売上の合計:81,166,998が返ってきていることがわかります。
同様に家電、事務用品も全ての年の合計値が返ってきていることがわかります。
実験3(③のパターン)
計算式 :WINDOW_SUM(SUM([売上]))
次を使用して計算:表(横から下へ)or(下から横へ)
意味:表全体の合計値を返してね

今回は表全体(2013年〜2016年の全カテゴリ)の合計売上:227,176,842が返ってきていることがわかります。
実験4(④のパターン)
範囲を指定するために、WINDOW_SUM(SUM(売上)、範囲①、範囲②)をいれて計算式を作成します。
計算式 :WINDOW_SUM(SUM([売上]),-1,0)
次を使用して計算:表(横)
意味:意味:1列前の売上(計算式の-1)と現在位置(計算式の0)の範囲で合計して返してね。

一つ前の列と現在値の合計を返す計算式となりますので、
一番左の紫枠は、
「一つ前の売上:無」と 「2013年の家具の売上:13,659,370」を合計した値「13,659,370」を返している。
真ん中の濃い紫枠は、
「2013年の家具の売上:13,659,370」と「2013年の家電の売上:14,084,755」を合計した値「27,744,125」を返している。
右の薄い紫枠は、
「2013年の家電の売上:14,084,755」と「2013年の事務用品の売上:10,127,254」を合計した値「24,212,009」を返している。
他の2014年、2015年、2016年も同様の考え方で値が返ってきています。
実験1〜4を実施してきましたが、通常のSUM()では実現できない、特定の範囲等の計算に非常に便利であることが理解できました。
Tableauは関数が多く、知っていることで、できることの幅も大きく広がるので、一つ一つしっかりと理解して進めていきたいと思います。