tableau勉強復習ノート⑧LOD計算

お疲れ様です。
本日はTableauで理解しておくべき概念⑧LOD計算について勉強したことを、自分の言葉でまとめていこうと思います。
私が今挑戦しているDATASaberプログラムで初めてLOD計算が登場したのはOrd8だったかと思います。
以下のブログを参考にさせていただきました。

またLOD計算のイメージについて、下記のブログを参考にさせていただきました。


LOD計算とは何か

計算フィールドで作成する際に利用できる計算の一種。
FIXED、INCLUDE、EXCLUDE の三種類がある。
Level Of Detail(略してLOD) → 日本語では「詳細レベル」とも言う。
LOD = 詳細レベル = 粒度 と言える。

「粒度」= 「粒」の細かさ具合

「粒」とは一体なにか?
まずtableauがVizを作る時にどんなことをしているかを考える。

合計売上(売上の合計を集計している)というメジャーを
地域カテゴリサブカテゴリ
のディメンションでデータを細かく切り分けて集計している。
ディメンションが増えるごとに、合計売上の粒度は細かくなっていく。
この集計を行う部分を粒度(LOD)という。
★ディメンションを追加していくごとに、粒度が変化していく。

Viz LOD

それぞれのワークシートの粒度(LOD)を、Viz LODという。

合計売上(売上の合計を集計している)というメジャーを
地域カテゴリサブカテゴリ
のディメンションでデータを細かく切り分けて集計している。

上記のような場合のViz LODは
地域カテゴリサブカテゴリ

LOD計算の種類は3種類

合計売上(売上の合計を集計している)というメジャーを
地域カテゴリサブカテゴリ
のディメンションでデータを細かく切り分けて集計している。

上記のVizで売上の合計、平均などを集計する時、集計の粒度は
Viz LOD(地域カテゴリサブカテゴリ)で決まる。

このままでもViz作成は出来る。
しかしこのViz LODとは違う粒度で集計した値がViz作りに必要な時がある。

Viz LODとは違う粒度で集計した値をViz作りに使いたいが、今現在のViz LODを変えたくない。
そんなときに使えるのが「LOD計算」
LOD計算は3種類ある。

INCLUDE計算

「粒度を追加したい」「Viz LODより細かい粒度での集計が欲しい」
時に使う。
今のViz LODを変えずにViz LODに別の粒度を追加したい
そんなときにINCLUDE計算を使う。
INCLUDE計算は計算結果をATTR(属性)として持つことは出来ず、合計、平均など何かしら集計した形で持つ。
つまりメジャー(連続、不連続は変更可能)でしか持てない。
デフォルトでは合計が選ばれている。

DATASaberプログラムで初めてINCLUDE計算が出てきたのはOrd8Q3だったかと思います。
以下の計算式は私がOrd8の復習をした際に作成した
返品のあるオーダーID1つあたりの売上を計算したものです。
{ INCLUDE [オーダー Id (返品)]:SUM([売上])}

INCLUDE計算のイメージ
tableauが表計算時に自動で作成している中間テーブルをさらに細かく計算できる。

EXCLUDE計算

「粒度を粗くしたい」時に使う。
今のViz LODを変えずにViz LODよりも粒度の粗い集計をしたい
そんなときにEXCLUDE計算を使う。
もともとviz LODにあるディメンションを取り除くのがEXCLUDEなので、Viz LODに反映させるために集計が必要になる。
しかしExclude計算での計算結果は常にVIz LODより粗くなるので、そのままViz LODに反映させることが出来る。
どんな集計(合計でも平均でもなんでも)をしても結果は同じ。
なので、EXCLUDE計算はデフォルトで「属性」設定になっている。

DATASaberプログラムで初めてINCLUDE計算が出てきたのはOrd8Q8
Q8ではEXCLUDE計算での計算結果はGaneko Satoshiさんのブログでの例と同じく、属性設定で合計売上のソート用に使用されています。
{ EXCLUDE [カテゴリ]:sum(IF [カテゴリ]=[ソートカテゴリ] then [売上] END)}

EXCLUDE計算のイメージ
tableauが表計算時に自動で作成している中間テーブルで、粒度をViz LODの粒度よりあえて粗く計算している。

FIXED計算

「Viz LODとは関係なく粒度を決めたい」時に使う。
今のViz LODを変えずに集計に使用したい粒度をViz LODとは関係なく指定し、常にその粒度で計算を行う計算結果が欲しい
そんな時にFIXED計算を使う。
INCLUDE、EXCLUDEはViz LODの粒度を細かくするか、粗くするか。
どちらもViz LODと関係しているが、FIXEDはViz LODとは関係なく粒度が決まり集計が行われる。
FIXEDは計算式を作った時点で粒度が完全に決まっていて、Viz LODの影響は受けない。
FIXED計算をViz LODに反映される時、もう一度集計が必要かどうかはFIXED計算に使われている粒度とViz LODの粒度の関係によって決まる。
FIXED計算の計算結果はデフォルトでは合計が設定されている。

FIXED計算はコホート分析をするときに使える。
Ganeko Satoshiさんのブログで紹介されている顧客IDごとの最新オーダー日を使ったコホート分析はDATASaberプログラムOrd8Q5でも問われている。
{ FIXED [顧客 Id]:MIN([オーダー日])}

DATASaberプログラムで初めてFIXED計算が出てきたのは恐らくOrd8Q2
顧客IDごとの最後のオーダー日、逆に最新オーダー日を出しています。
①顧客IDごとの最後のオーダー日、②最新オーダー日
①{ FIXED [顧客 Id]:MAX([オーダー日])}
②{ FIXED :MAX([オーダー日])}

FIXED計算のイメージ
FIXED計算のみでtableauの裏側で集計テーブルを持ち、その結果をViz LODに反映させることになる。粒度はViz LODの影響を受けない。

FIXED計算にしかない特徴

FIXED計算はINCLUDE、EXCLUDEにはない特徴がある。
★計算結果をディメンションとして使用できる。あたかもデータベースに一行新たにディメンションが加わったかのように計算式の結果をくっつけることができる。
★ビンの作成ができる(ちなみにOrd8ではFIXED計算→ビン作成もたくさん出てくる)
★クエリパイプラインの順序がコンテキストフィルタの次。ディメンションフィルターより前にクエリが実行されるため、ディメンションフィルターはFIXED計算にはかからない。ディメンションフィルターをFIXEDより上位にしたいことはコンテキストに設定する。

INCLUDE、EXCLUDEはFIXEDに書き換え可能

例えば
{ INCLUDE [顧客ID]:SUM([売上]) } は
{FIXED [カテゴリ] , [顧客 ID] : SUM ( [売上] ) }
と計算結果は全く同じ

地域別サブカテゴリの利益を可視化したViz上での
{ EXCLUDE [地域] : SUM ( [利益] ) } は
{ FIXED [サブカテゴリ] : SUM ( [利益] ) }
と計算結果は全く同じ

書き換え可能だからと言って、FIXEDのみで事足りるわけではない。
INCLUDE、EXCLUDEはViz LODの粒度を細かくするか、粗くするか。だからこそ、ワークブックの粒度(Viz LOD)に柔軟に対応してくれる。


LOD計算の再計算

FIXED計算、INCLUDE計算はメジャーピルの下向き▼>メジャーから
合計、平均など、集計方法を選ぶことが出来る。

例えばカテゴリ別利益を可視化したViz上での
{ INCLUDE [顧客 ID] : SUM ( [売上] ) }

Viz LODの粒度であるカテゴリ家具に対する
{ INCLUDE [顧客 ID] : SUM ( [売上] ) }
 の多くの値は多数存在する。
Vizに利用するためには、これら多くの値をどう利用するかを決めないといけない。これがLOD計算の再計算
★FIXED計算をディメンションとして使用している
場合、LOD計算の再計算は行われない。

LOD計算をいつ使うべきか

LOD計算の概念を理解したりスキルを身につけることは容易ではないので、あまりにも多用することは避ける。

グループでVizを見ている場合。
LOD計算の知識を持っている人が少ない状態だと、Vizを編集するだけでもその人の力を借りないといけない。
だれでも作れるわけではないVizが多い状態は危険かもしれない。
LOD計算を使う場面を見極める

LOD計算を使うべき時

tableauの良いところは、列、行、マークに自由自在にディメンションを置くことで、自由に切り口となる粒度を変えて可視化できること。
ただし時々、
・Viz LOD以外の粒度の集計が必要になったり
・LOD計算で計算することが一番スマートかつ効率的
な時がある。
そんなときはLOD計算の出番。

最後に

DATASaberプログラムOrd課題でLOD計算をたくさんやりました。
しかしオリジナルでのViz作成でLOD計算をいつ使ったらいいか?
が、正直分からなかったです。
今回こうしてまとめることができて本当に良かったです。
今後のViz作成にも活かしていきたいです。

本日は以上です。
最後まで読んでいただきありがとうございました。



いいなと思ったら応援しよう!