tomokoです。
TableauのつまずきポイントNo.1の座に君臨しているとも言えるLOD計算。
しかしLOD計算はとても便利な集計機能であり、正しく使いこなしたいですよね。
LOD計算がどのように計算されているのか確認しながら理解を深めていきたいと思います!
LODとは
LOD = Level of Detail = 詳細レベル = 集計レベル で、つまり
LODとはどのディメンションでメジャーを集計するか、ということです。
Viz作成時、ワークシートの行列やマークカードにディメンションとメジャーを配置しますが、
配置したディメンションによってメジャーが計算されますよね。
ディメンションをたくさん設定するほど、集計のレベルは細かくなります。
この集計のレベル(粒度)がLODです。
LOD計算とは
ワークシートに配置したディメンションとは異なるレベルで集計をしたい!という時に使用するのがLOD計算となります。
TableauのLOD計算には FIXED、INCLUDE、EXCLUDEがあります。
FIXED | FIXEDで指定したディメンションで集計する |
INCLUDE | 表で指定しているディメンションに加えて、INCLUDEで指定した項目を使用して集計する |
EXCLUDE | 表で指定しているディメンションからEXCLUDEで指定した項目を除いて集計する |
わかるようなわからないような…、、この後詳細な動きを見ていきますが、念頭には置いておきましょう。
LOD計算を使用する場合、計算の順序に気を付ける必要があります。
過去の記事でも Tableauヘルプ 操作の順序(クエリパイプライン)について は紹介していますが、
日本語で紹介したいなと思っていたところ、すでにわかりやすく作成いただいていたものがありましたので、
そちらをご紹介させていただきます!
Note [Tableau Tips]Tableauの計算順序(クエリパイプライン)の覚え方と、もっと細かい情報 by みのるさん
FIXEDはディメンションフィルタより前に計算され、
INCLUDE、EXCLUDEはディメンションフィルタの後に計算される、ここはしっかり意識しておきましょう!
それではLOD計算が具体的にどのような計算となっているのか見ていきます。
※以下で使用しているスーパーサンプルストアデータの顧客名は一意です。(顧客IDが異なる同姓同名のデータは存在しない)
FIXEDはどんな計算か
「都道府県・顧客別の売上を表示している表で、各顧客の合計売上も表示したい」
こんな時はFIXEDの出番です!
以下のシートは、顧客別の売上を都道府県ごとに表示しています。
{ FIXED [顧客名] : SUM([売上]) } は「顧客名ごとの合計売上を集計する」ということです。
稲垣結衣さん(新垣ではない)は複数の都道府県で売上がありますが、FIXEDでは「顧客名のみで集計する」としているので、
結衣さんのすべての売上が合計され(15,398円)、売上のあったすべての都道府県に表示されています。
FIXEDで集計した顧客名ごとの合計数値を使用して、顧客ごとの売上構成比を算出することもできますね。
FIXEDはディメンションフィルターより前に計算されるので、都道府県を絞っても算出結果は変わりません。
INCLUDEはどんな計算か
「都道府県ごとの売上を表示している表で、顧客ごとの平均売上も表示したい」
こんな時はINCLUDEの出番です!
INCLUDEで計算した栃木県の平均売上は54,888円で、通常の平均売上は28,391円です。何が違うのでしょうか…。
通常の平均売上は栃木県全体の平均売上で、売上のすべての行の平均値です。
右下のシートの通り、多くの顧客は複数の製品を購入しています。
各顧客の合計売上を平均したのが、平均 { INCLUDE [顧客名] : SUM([売上]) } となります。
INCLUDEはディメンションフィルターより後に集計されます。
栃木県の全顧客のINCLUDE平均売上は54,888円でしたが、
4人の顧客でフィルターをかけると、
INCLUDE計算では、フィルターで選択した4人の各売上合計が平均され、85,845円となっています。
EXCLUDEはどんな計算か
「都道府県、顧客別の売上を表示している表で、選択した都道府県と顧客の合計売上も表示したい」
こんな時はEXCLUDEの出番です!
稲垣結衣さんの売上は以下です。
都道府県を大阪と栃木に絞ってみます。
製品情報を除いて、結衣さんの大阪と栃木での売上合計を見てみます。
通常の合計 | 結衣さんの大阪の売上と栃木の売上 |
EXCLUDE都道府県 | 結衣さんの大阪と栃木の売上合計(顧客と都道府県のフィルターがかかっている) |
FIXED都道府県 | 結衣さんの全都道府県での売上合計(都道府県のフィルターはかかっていない) |
EXCLUDEはディメンションフィルターの後に計算され、
FIXEDはディメンションフィルターの前に計算されています。
フィルターを反映させたいか、させたくないかにより、FIXEDとEXCLUDEどちらで集計させるのか変わってきますね!
LOD計算時のTableauの内部的な動き
LOD計算は中間テーブルで行われています。
通常の計算はデータソースを1行1行見て計算しています。
1行1行ではなく、あるディメンションで集計した数値を使用したい場合は、LODで集計することができますが、
その際は中間テーブルを使用して集計し、その集計結果をデータソースで計算した結果と結合しています。
中間テーブルで集計して元のデータと結合するという頑張りのおかげで
LOD計算という便利な機能を実現してくれているので、動作速度が遅くなることには目をつぶって仲良くしていきたいですね!
まとめ
LOD計算についての解説はたくさんありますが、それぞれ説明内容は異なりそれぞれで気付きがありますので、
色々な解説を読んで更に理解を深めていきましょう!