LOD計算を自分が一番分かる形でまとめてみた(EXCLUDE)
こんにちは、momoです。
LOD計算シリーズの最終回は「EXCLUDE計算」です。
「自分が一番分かる形」にするまで
いちばん時間がかかりました。
というのも
EXCLUDE計算の動きは理解できても
なんでEXCLUDE計算である必要があるのか
しっくりくる具体例になかなか出会えずにおりました。
何とか、よし、と思えたものを書き残します。
■利用シーン
サンプルスーパーストアの注文情報を探索しています。
一番気になる指標 [売上(合計)] を
[サブカテゴリ] ごとに見てみます。
そして、[カテゴリ] ごとの平均線を加えて
[売上(合計)] と比較してみると
平均を超えている/超えていないサブカテゴリが分かりました。
でもこれだけでは、平均と加えて
どれだけプラス/マイナスなのか分かりません。
ここで力を発揮するのが「EXCLUDE計算」です。
■アウトプットイメージ
[サブカテゴリ] ごとの売上合計と
[カテゴリ]ごとの売上平均の差を表示しています。
最初に見たビューの
平均線と棒グラフの差分ということになります。
~ポイント~
・比較対象となる売上合計は [サブカテゴリ] の粒度で計算していること
・平均は [カテゴリ] の粒度で計算していること
・ビューの粒度は [サブカテゴリ]であること
■やること①
平均の対象となる
[サブカテゴリ] ごとの売上合計を求めます。
なぜFIXED計算を使う必要があるのかは
このあとを見ると分かります。
■やること②
①で求めた [サブカテゴリ別の売上合計] の
[カテゴリ] (VizLOD) ごとの平均を求めます。
ビューの粒度は [カテゴリ] と [サブカテゴリ]ですが
平均を求めるのに使うのは [カテゴリ] だけなので
ここでは[サブカテゴリ] を無視します。
~やること②を踏まえて~
[サブカテゴリ] を無視して平均を求めたい
一方で、平均のもととなる売上合計は
[サブカテゴリ] ごとに求めたい
この一見矛盾することを実現してくれるのが
「FIXED計算」です。
このような理由で
やること①の[サブカテゴリ] ごとの売上平均には
FIXED計算を使いました。
■やること③
[サブカテゴリ] (VizLOD) ごとの売上合計と
②で求めた[サブカテゴリ別売上合計の平均] の差を求めます。
集計同士の引き算にするために
EXCLUDE計算を集計関数(ここではATTR)で括っています。
■やること④
③で求めた [カテゴリ別平均売上との差] を
[サブカテゴリ] (VizLOD)ごとに表示します。
■完成!
[サブカテゴリ] ごとの売上合計と
[カテゴリ] ごとの売上平均の差を表示することができました。
■まとめ
EXCLUDE計算を使うと
(ビューにある粒度) - (EXCLUDEで指定したディメンション粒度)
で集計することができます。
ビューより粗い粒度で計算した結果が
ビューの粒度(VizLOD)にのせられるイメージ。
形式上「集計」としているものの
「粗い粒度のものを、細かい粒度に」なので
個人的には「のせる」という言葉が
イメージしやすく、この言葉を使っています。
この背景を踏まえると
通常はメジャーをプロットすると
デフォルトが「SUM」になる一方で
EXCLUDE計算のメジャーをプロットすると
デフォルトが「ATTR」になる理由も
なんとなく理解できる気がします。
「のせる」に対して
SUMやAVGよりはATTRを用いるほうが
違和感がない、と私の中では納得しました。
最後は、本シリーズの前半に書かせていただいた
おさらいのおさらいで締めくくりたいと思います。
①FIXED計算:VizLODとは別に、LODを新たに定義して計算
②INCLUDE計算:VizLODに、別の切り口を追加して計算
③EXCLUDE計算:VizLODの、特定の切り口を無視して計算
~イメージ~
「自分が一番分かる形」での
ゆるりとしたまとめではありましたが
もし他の方の理解にも
お力添えできていましたら幸いです。
おしまい。
<参考> がねこ師匠のお教え
特に、元データ・VizLOD計算・LOD計算の
レイヤーを分けた考え方を参考にさせて頂きました。
分かりやすく、丁寧なご説明をありがとうございます。