【Tableau】LOD計算とは?〜EXCLUDE編〜

f:id:kaodora:20210110171751j:plain
LOD計算~EXCLUDE計算編~です💡💡💡
ここまできました!😭
f:id:kaodora:20210115112215p:plain
LOD計算の概要はこちらです。
kaodora.hatenablog.com

EXCLUDE計算の特徴

1.EXCLUDE計算はビュー内のディメンションを無視します。

{EXCLUDE[サブカテゴリ]:SUM([売上])}
この式はサブカテゴリを無視して、ビュー内のディメンションで集計して売上合計を返します。
ただし、無視したいディメンション(サブカテゴリ)は必ずビュー上に存在していなければいけません。
f:id:kaodora:20210117231050j:plain

しかしLOD計算は非集計として扱われるため
ATTR({EXCLUDE[カテゴリ]:SUM([売上]})実際ビュー上では集計関数のついたこのような式になります(デフォルトは属性)
EXCLUDE計算は
○○(ディメンション)を無視したビュー内のディメンショごとの集計関数□□」を出
すと覚えましょう。
よってこの式は上の画像に倣い、サブカテゴリを無視したカテゴリごとの売上合計、となります。

2.どんな集計関数でも結果は変わりません

上の説明で、さらっと集計関数をATTRにしてしまいました!
f:id:kaodora:20210118080344p:plain
ATTRとは属性のことですがその結果が1つだったらその値を返し、複数であれば*(アスタリスク)を返すというものでした。よく非集計を集計にする際に使いますね。
kaodora.hatenablog.com

EXCLUDE計算が他のLOD計算と違うとことは、ここです。
どんな集計関数を使っても結果は変わりません。
中間テーブルで集計した計算をさらに集計する、ということができないからです。
デフォルトは属性になりますが、どの集計関数でも大丈夫です。

3.EXCLUDE計算の活用例

EXCLUDE計算を使うときはどんな時でしょうか!
一例をご紹介します。

全体に対する割合を出したい時
f:id:kaodora:20210118104126p:plain
上の画像ではサブカテゴリごとの売上を出していますが、数字の横に全体の割合(%)を出したい場合はどうしましょう。それは以下の式で出すことができます。

SUM([売上])/SUM({EXCLUDE[サブカテゴリ]:SUM([売上])})
サブカテゴリの集計を無視した売上は、全体の割合ですよね。
この式をテキストに追加すると、、出すことができました!
f:id:kaodora:20210118104802p:plain

4.EXCLUDE計算とフィルターの関係

f:id:kaodora:20201221203848p:plain
EXCLUDE計算はディメンションフィルターがかかった後に計算されます。
f:id:kaodora:20210118113910p:plain
上の写真のように、
{FIXED[カテゴリ]:SUM([売上])}
{EXCLUDE[出荷モード]:SUM([売上])}をそれぞれビューに入れます。(どちらもカテゴリごとの合計売上)ですが
以下のように出荷モードでフィルター(ディメンションフィルター)をかけるとEXCLUDE計算だけ数字が変わることがわかります。
f:id:kaodora:20210118114352p:plain
これは裏側で以下のようなことが起こっています。

f:id:kaodora:20210118120454j:plain
繰り返しになりますが、ディメンションフィルターの後にEXCLUDE計算は集計されます。

EXCLUDE計算の例

EXCLUDE計算は先ほどにもありましたように、
○○(ディメンション)を無視したビュー内のディメンショごとの集計関数□□」でした。
下の例を見て、口に出してガンガン練習しましょう。

SUM{EXCLUDE[カテゴリ]:AVG(利益)}
→カテゴリを無視したビュー内のディメンションごとの平均利益
SUM{EXCLUDE[カテゴリ]:COUNTD([顧客id])}
→カテゴリを無視したビュー内のディメンションごとの顧客idの個別のカウント
{EXCLUDE[顧客id]:MAX([オーダー日])}
→顧客idを無視したビュー内のディメンションごとの最終オーダー日
(集計関数以下が「日付型」のため、このFIXED計算も「日付型」になります。よって、非集計として、式の前に集計関数がつくことはありません。)