えいきちのデータ分析

えいきちのデータ分析

データ分析の理解を進めるブログ

〜Tableau〜 LOD EXCLUDE関数の理解

f:id:eikichix:20200418153212j:plain

INCLUDE関数に引き続きEXCLUDE関数につまづきました
今回も中々参考書の目的が理解できず、今回は丸っぽ参考サイトの過程をお借りして
自分なりに作成してみました

目的:カテゴリに対する売上割合を表示する

とします


サブカテゴリを切り口に売上を表示します
f:id:eikichix:20200418153845p:plain

表示をシンプルにするため、フィルタにカテゴリを入れて家具で絞っています
割合を出したいので分母は「カテゴリの合計金額」なのですが
すでに切り口としてサブカテゴリを置いてしまっているので、SUM[売上]を置いて割合を出してもサブカテゴリ毎の金額となるので100%となってしまいます

ここで使用できるのがEXCLUDE関数のようで
ディメンションを指定することでそのディメンションを除外することができ、一つ上の粒度で算出できるようです
なので以下のように計算フィールドを作成しました
じゃあエラーが。。。

f:id:eikichix:20200418154734p:plain


集計:SUM([売上]) なのでEXCLUDEは非集計になるようです
分からなかったので参考サイトで調べてみると

EXCLUDEを集計関数として扱いたいのであれば、
AGG({ EXCLUDE [ビュー上の除外したいディメンション1](,[ビュー上の除外したいディメンション2]…) : [集計式] })
と集計関数でEXCLUDE式を囲ってください。
AGGには(MIN/MAX/SUM/ATTR)のいずれかを入れてください。

とあったので囲ってみたらOKになりました
集計になったんだろうなと理解
f:id:eikichix:20200418155233p:plain

参考サイトにはこうも書いてあって

どの集計関数であっても結果は変わらない

確かにSUM[売上]で出力されるのは集計された1値だと理解しているのでそうなるとは思うんだけど
そもそもEXCLUDE関数を使用した時になぜ非集計扱いとなるのかが理解できないなー

ここはTableau仕様なのだと踏ん切りつけて先に進みます


そしてピルをラベルに配置すると
f:id:eikichix:20200418160223p:plain

正解っぽいのが出たぞ

ただ合ってるか分からないので、ここにカテゴリ毎の売上金額を出力したいと
欲が出たのでFIXED関数使えば良いと思い以下の計算フィールドを作成・配置
f:id:eikichix:20200418160426p:plain
f:id:eikichix:20200418160532p:plain


表示もできた
テーブルで計算すると
13919786/81166998=0.17149...

なので合ってそうです
これで目的達成だし、理解できたかなと


ただ2つ気になったのでこれを試して終わろうと思い

1. FIXED関数でどうにかなりそう

カテゴリ売上の表示を作成した時にあれ?と思い、やってみることに
f:id:eikichix:20200418161017p:plain
f:id:eikichix:20200418161117p:plain

やっぱりできた

ここでの気づきはFIXED関数もEXCLUDE関数同様に非集計となってしまうのでAGGを使用しなければならないこと
参考書ではここに引っ掛からなかったのでなんでだろうと再度読み直したら有無を言わさずにATTRを計算フィールドに記載していた もっと能動的に読書しないとと反省

2. 表計算でどうにかなりそう

f:id:eikichix:20200418161942p:plain
f:id:eikichix:20200418162021p:plain

これもできた

ここでの気づきは表計算の理解がまだ乏しいこと
計算タイプも次を使用して計算もたくさん選択肢があるがぼやっとしか理解できないしそもそも深く理解しようとしたことがなかった

ここ理解すれば関数使わずともいろんなことができそうだなと
関数使用も良いのだけどできる限りシンプルにすることを考えるとTableauの標準機能を使いこなしたほうが良いかなと思うのでここも勉強しようと思いました

また、別でまとめようと思います

今日はここまでー

参考書
www.amazon.co.jp


参考サイト
ex-ture.com