今回はTableauでもややこしい、INCLUDE, EXCLUDEの解説をしようと思います。
あくまで私の見解や解釈になりますので、ご容赦ください。
INCLUDE
INCLUDEの気持ち
INCLUDEは「先にこの単位で集計してテーブルを作り直し、それ以降の集計計算もこのテーブルを使ってね」というのが、基本的な考え方になると理解しています。
Excelで計算してみる
まずはカテゴリごとに売り上げを平均すると以下のようになります。Excelで計算してみました。
INCLUDEを入れて、Tableauで色々表示させてみる
INCLUDEを入れたり入れなかったり、入れた場合はINCLUDEの対象とする列を、顧客ID・カテゴリ・サブカテゴリに変更してみました。
{INCLUDE[”顧客ID”]:AVG()[”売上”]}
{INCLUDE[”カテゴリ”]:AVG()[”売上”]}
{INCLUDE[”サブカテゴリ”]:AVG()[”売上”]}
売上の平均をINCLUDEしてみた結果は以下になります。
結果からわかる通り、INCLUDE無しでカテゴリごとの平均売上を出しているものと、INCLUDEにカテゴリを入れたものは同じ結果になっています。顧客IDとサブカテゴリをINCLUDEに入れたものは、単純に売上を平均した結果と異なる結果になりました。
結果を考察してみる
1つ例としてサブカテゴリを用いて、なぜINCLUDEサブカテゴリにしたものは、単純な平均売上と異なる結果になったか考えてみましょう。例としてINCLUDEサブカテゴリ列の家電について考えてみます。
INCLUDE式の処理内容を日本語にしてみて、その処理に従ってExcelで処理してみると以下のようになります。
{INCLUDE[”サブカテゴリ”]:AVG()[”売上”]}:サブカテゴリ単位でのテーブルを作成し、行にカテゴリ、列に平均売上を入れる
「サブカテゴリ単位でのテーブルを作成し、」までを処理したらこうなります。カテゴリも列に入れている理由としては、この後カテゴリごとに集計するためです。サブカテゴリが行の最小単位になっているということが大事です。
例えばこの状態で家具になっている売上だけを平均してみます。
総計になっていますが、家具の平均が37,421となり、TableauでのINCLUDEの結果と一致しました!
今回はサブカテゴリ⊂カテゴリ(サブカテゴリはカテゴリに含まれる)の関係なので検証しやすい結果となりましたが、逆パターンでもやってみました。例としてサブカテゴリをINCLUDEしたときのアプライアンスの平均値を先程の例と同様にして見てみます。
値が一致しました!
EXCLUDE
EXCLUDEは「指定された列は全て区別できない単一の値に置き換え、今後の集計でも使えなくしてね」というのが基本的な考え方です。
カテゴリを行にしている状態で売上の値がすべて同じになりました。
この22,718という値ですが、この値は全売上の平均値です。つまりカテゴリを無視して売上の列の値をそのまま平均したときの値です。
このことから、Tableau内で平均値を集計計算する前にEXCLUDEでカテゴリを除外したものだとわかります。行われている計算としては「カテゴリを除外して平均計算をしてね」ということになります。Excelで説明すると、カテゴリの「家具、家電、事務用品」が全て「除外済み」のような単一の文字列になったイメージです。
理解するうえで気を付けたい点としては、値が「除外済み」という値になっただけで、列全体が除外されて居なくなったわけではないということです。
これだとこのテーブルをどう集計しようとも、行をカテゴリにして平均を集計したところで元が家電なのか家具なのかもわからなくなってしまっています。そのため、全体の平均を各行に表示しているということになります。
私の失敗例ですが、「EXCLUDEって除外だから、列を削除してるのかな?」と認識してしまっていたこともあります。ただこれだと列を削除してしまうと結果を今回のように表示できなくなってしまうので、**「EXCLUDEをすることで、(列を削除するのではなく)EXCLUDEにした列の中身を、元の値が何だったかわからなくする」**というのが理解として正しそうなのかなと思っています。
以上です。ご意見や感想などございましたらお願いします。
万が一間違ってる場合はご教示いただけますと幸いです。
ありがとうございました!