【Tableau】LOD計算のFIXEDとINCLUDEの違いを理解しよう

DataSaberチャレンジ中の身ですが、LOD計算とにらめっこしてなんとなく理解できてきたのでここに記録します。

えるおーでぃーえるおーでぃーと唱えるTableau初心者~中級者を見かけたことはありませんか?
あーはいはい、エルオーディーね!と知ってる感を出していたのですが、この度めでたく向き合わざるを得なくなりました。
勉強した結論としては、なんではよ教えてくれへんかったん?という感じです。

LODってなに?

まずLOD、こちらは単純な語句説明としてはLOD=Level Of Datailということで、粒度を表しています。
Tableauのワークシート一つに対して一つのVizがあると思いますが、そのVizがどんな条件で集計されているか?を表します。

では基本の売上集計VizでLOD(粒度)を見ていきましょう。

①売上をそのまま行に入れる

この時は何もディメンションがない状態で集計されています。
この時のLODは無しです。粒度、ありません。

合計売上

②カテゴリを列に入れる

カテゴリ別の売上が集計されます。
この時のLOD、粒度は<カテゴリ>です。
さっきの合計売上というひと固まりの集計結果を、カテゴリに分けています。普段当たり前のように行っているこの「カテゴリ別売上」を作る動きですが、Vizの粒度を一つ深くしているのです。

カテゴリ別売上

③地域も列に入れる

はい、カテゴリ別売上がさらに地域別になりました。
この時のLOD、粒度は<カテゴリ><地域>の2つです。
要素を足すとVizで見られる情報も細かくなっていきますね。つまり普段から意識していないだけで、VizのLODを操作していたのです。

カテゴリ別地域別売上

で、LOD計算って?

LOD計算というのは、このViz自体のLODに依存せずに、こういう集計が出来てしまう優れものです。
通常Vizを作ってメジャーをVizに入れると、そのViz自体のLODによって集計されますよね。先ほどのグラフの「SUM([売上])」などがその例です。
このSUMの粒度を変えるには、Vizのディメンションを変える(地域やカテゴリを足す)ことで集計粒度が変わります。
しかしLOD計算を使えば、Viz自体の粒度が変わろうと、指定した粒度で集計することが出来ます。
いつだってカテゴリ別売上を総計代わりに表示させられるのです。

LOD計算の書式

LOD計算は関数と異なり、かっこは「 { } 」となります。
また、LOD計算の呪文は三つしかありませんので、覚えればよいのです。

①FIXED ②INCLUDE ③EXCLUDE

この三つです。呪文の意味は後述しますので今はとりあえず「三つあんねや」と思ってください。
カテゴリ別売上のLOD計算を作る時は、計算フィールドを作成し、下記のように記入します。

{ FIXED [カテゴリ]: SUM([売上]) }

カテゴリを固定して、いつだってカテゴリ別の売上を合計してね、という式

{ 呪文[固定したいディメンション] : 集計}
ということです。呪文を選び、固定したいディメンションを選び、集計フィールドとの間を「:」で区切ります。
手書きで書いてもいいですし、カテゴリと売上を選択した状態で、右クリックの作成メニューからLOD計算を選んでも大丈夫です。勝手にいい感じに作ってくれます。

お前こんなところにおったんか

呪文の意味①FIXED

固定せよ、という意味の呪文です。
Vizの粒度に影響されないので、一番よく使います。
これを使うと、Vizでの粒度を完全に無視して常に固定の値を返します。しかも完全外部結合みたいに返してくるので、Excelでセルを結合して総計を表示させるみたいな感じの使い方は難しいでしょう。
まぁセル結合は万死に値するので問題ありませんね。

{ FIXED [カテゴリ]: SUM([売上]) }
売上(カテゴリ)のところに、家具なら家具売上の合計値がもうええってってくらい入る

呪文の意味②INCLUDE

Vizに追加せよ、という意味の呪文です。
FIXEDとは違い、INCLUDE/EXCLUDEはViz自体のLODに影響されます。
その計算フィールドを入れるVizが変われば、それに合わせてLOD計算での集計粒度も変わります。
また逆に、そのVizにはない粒度の集計を加えることが可能です。なんか柔軟な奴です。こいつともっと和解したい。
例)都道府県別平均売上のVizを、都道府県別のオーダー別平均売上に変えたけどVizにオーダーIDは入れたくない場合。こうします。

( { INCLUDE ([オーダーid]):sum([売上]) } )

これでまずオーダーIDごとの売上が出ます。これを何やかやしていきましょう。

1.都道府県別平均売上
まず都道府県別平均売上があるとします。

都道府県別平均売上

この「平均(売上)」のとなりに、先ほど作ったINCLUDE君を入れます。

左:都道府県別平均売上 右:都道府県別オーダーID別平均売上

これで右側には、その都道府県におけるオーダーIDごとの平均売上が出せました。Viz自体の粒度を変えることなく(ディメンションにオーダーIDを含めることなく)オーダーIDの粒度を追加できました。

2.地域別に集計
さらにINCLUDEの特徴として、Vizに合わせて集計粒度が変わるというものがあります。
先ほどのVizから都道府県を抜くと、平均売上はViz自体の粒度に合わせて「地域別平均売上」となりますが、INCLUDE君もVizに合わせて「地域別のオーダーID別平均売上」となってくれます。
INCLUDE君はViz上のディメンションを生かしてくれるんですね。

左:地域別平均売上 右:地域別オーダーID別平均売上

呪文の意味③EXCLUDE

Vizから除けよ、という意味の呪文です。
Vizの粒度は細かいままで見せたい、でも合計値があると嬉しい時とかに使えます。指定したディメンションを除いて集計してくれます。

こういう地域別売上があるとします。

地域別売上

これに都道府県を足すと、こうです。

地域別都道府県別売上

でも右側に常に地域の合計を表示させたい!そんな時。
(小計の表示じゃヤダヤダな方へ)
都道府県をEXCLUDEしたLOD計算を作り、入れます。

{ exclude [都道府県]: SUM([売上]) }
左:都道府県別売上 右:地域別売上

売上を地域の粒度で集計することが出来ました。
本当はもっとオシャレな使い方があるのですが、一旦LOD計算の働きを見るのが目的なのでこれをお見せするにとどめます。

小ネタ

・LOD計算は割と複雑な書き方も出来ます。

集計のほうにminとmaxを入れてしまえる
集計にIF文も入れられる

・右クリックから作れるのはFIXEDのみ
地域と売上を選択してLOD計算を作ると下記の計算式が自動で作られます。

INCLUDEの場合は直接入力で打ちかえています。

・コントロールキーを押しながらのドラッグでも作れる。
売上をドラッグして、コントロールキーを押しながら都道府県に乗せると、階層ではなくLOD計算が作られます。これもFIXEDのみ。

タイトルも自動でつけてくれるよ。

元データの粒度が細かいほど、LOD計算の重要度は増すのではないでしょうか。
サンプルスーパーストアのデータはかなり細かいので、使い倒してLOD計算と和解していきましょう。

いつかもっとわかりやすく書き直すことを目標とします。


この記事が気に入ったらサポートをしてみませんか?