【Tableau】個人的Tips②
個人的Tips①に引き続き
頭の整理と機能の復習のためのTips、個人的備忘録です👍
Tips1 : WINDOW_MAXの使い時
WINDOW_MAX(式,[開始,終了])
公式の説明では
ウィンドウ内の式の最大値を返します
とありますが、イマイチしっくりこないので具体的に見てみます。
![](https://assets.st-note.com/img/1712582285544-Ie7PhDdozq.png?width=1200)
これを見ると、WINDOW_MAX()はビュー内のディメンションの粒度かつ
表計算で指定した向きに応じて最大値を返すようです。
3行目:WINDOW_MAX(SUM(売上))は、表(横)に沿った計算なので
各年度ごとに、3つのカテゴリの売上の最大値を算出します。
2013年であれば、家電が最大のため、919,537円が3列に入っています。
また、
4行目は、表(下)に沿った計算なので
各カテゴリごとに、4年間で最大の売上を算出します。
家具であれば、2016年が最大のため、1,420,503円が各年に入っています。
関数自体はだいたい理解できたので
どんな場面で使われるのか、具体例を挙げます。
![](https://assets.st-note.com/img/1712582959859-fltDxAQGKJ.png?width=1200)
WINDOW_MAX(SUM([売上]))=SUM([売上])
アドホック計算で上記の式を作成して”色”に入れると、
ウィンドウ内の最大売上のところだけ協調することができます!
DATASaberのOrdでもよく出てくる使い方かと思います。
Tips2 : IF/IIFとCASEの使い分け
あまりプログラミングが得意ではないので
結構こういった初歩的なところの理解が浅い気がします…
業務中、なんとなくいつもIFを使ってしまいますが
ふと、CASEと何が違うのか気になりました。
具体例を挙げて使い分けについてまとめていきます。
IFとIIFの違いについて
IF <test1> THEN <then1>
ELSEIF <test2> THEN <then2>
ELSEIF.....
[ELSE <default>]
END
具体例としては
IF SUM([売上])>=100,000 THEN "優良顧客"
ELSEIF SUM([売上])>=50,000 AND SUM([売上])<100,000 THEN "見込み顧客1"
ELSEIF SUM([売上])>=25,000 AND SUM([売上])<50,000 THEN "見込み顧客2"
ELSE ”一般顧客
END
売上額をもとに顧客を4つのグループに分割する例です。
3つ以上のパターン分けをするときにはIF文を使うと良さそうです。
IIF(<test>,<then>,<else>)
具体例としては
IIF(SUM([売上])>300,000, "達成", "未達成")
これを見ると、IIF文は返り値がブール値、
つまりTRUEかFALSEで値が返ってきます。
この構文だと、条件に対して真か偽どちらかを返すことになります。
IF文は複数分岐であるのに対し、IIF文は2つにしか分岐できない点が違いといえます。
よって、
IF文を使うとき
3つ以上の条件分岐にしたいとき
IIF文を使うとき
2つの条件分岐で返り値をブールにしたいとき
IIFで表現できる式はIFでも書くことができます。
ですが、IIFで書けるものはこちらで書いたほうがシンプルかつ
処理速度も速いので、IIFも使いこなせるほうが良さそうです👍
CASEはいつ使う?
ではIFとCASEはどう使い分けるのでしょうか。
CASE <expression>
WHEN <value1> THEN <then1>
WHEN <value2> THEN <then2>
...
[ELSE <default>]
END
CASE YEAR([出荷日])
WHEN 2017 THEN ‘2017年出荷’
WHEN 2018 THEN ‘2018年出荷’
WHEN 2019 THEN ‘2019年出荷’
WHEN 2020 THEN ‘2020年出荷’
ELSE ‘それ以外’
END
このように、特定の値にラベルを付けたいときに有効です。
しかし、CASE文は指定した条件と一致しているかどうか(=)しか判定できません。
つまり前述のIF文の具体例のような不等号(<>)を使った式はCASE文では書けません。逆に多数のラベリングをしたい場合はCASEのほうが向いていますね。
よって、
IF文は汎用性が高い
返り値がブールでよい場合はIIF文を使ったほうがシンプルかつ処理速度がはやい
CASE文は条件が等号で表現でき、複数項目をラベリングするときに有効
個人的Tips③に続く…
この記事が気に入ったらサポートをしてみませんか?