【Tableau】LOD計算とは?~世界一易しいLOD計算の説明(にしたい)~
Tableauを始めてから、LOD計算がなかなか理解できず本当に苦労しました。
師匠に教えていただいたり、いろいろな方のブログを拝読したりして理解できたことをここにまとめます。
打倒Tableau三大将🤛
こちら概要編になります。 FIXED・INCLUDE・EXCLUDEそれぞれの説明はこちらです。kaodora.hatenablog.com
LODとは
Tableauを使っていると「LOD」という言葉が当たり前のように使われているように思いますが、そもそも「LOD」ってなんだ!というところから始めます。
LOD・・・Level Of Detailの略、データの粒度、詳細レベル
そのデータは何を表しているか
例えば、このビューは何を表していますか。
このデータ全体の売上の合計を表しています。
こちらはどうでしょうか。
カテゴリごとの売上を表しています。言い換えればカテゴリという粒度で売上を集計していますね。
ここから、サブカテゴリ、製品idといういうようにディメンション(集計粒度)を足していけば、データの粒度は細かくなっていきます。
ここでいう「足していく」というのはビューに追加するということですが、下の画像の赤枠に入れるとことでデータの粒度が決定します。(フィルターとツールヒント以外)
最終的には元のデータ(↓)の行レベルになります。
LODとはデータの粒度のことで、ディメンションが多ければ多いほど粒度は細かくなることがわかりました。
では、本題です。LOD計算とはなんでしょうか。
LOD計算はなんで必要?
上のビューは「顧客ごとの」購入金額(売上)の平均を表しています。
では、地域ごとに「顧客ごとの」購入金額の平均を出すにはどうすればいいですか。
上のビューはどうですか。地域ごとに売上の平均を出してみました。
しかし、これでは「顧客ごとの」売上の平均ではないですよね。
売上の平均、というものを改めて整理してみると
売上(227,176,841)をデータの行数(10,000)で割っている数字です。このデータは1購入ごとに行が発生していると考えると、今表示されているビューは「1購入ごとの」売上平均ということになります。
地図のビューに戻ると、これは「1購入ごとの」売上の平均を地域ごとの表しているのです。
「1購入ごとの」という粒度で成り立っているこのデータでは、他の粒度でビューを作ろうとすると集計の自由度が下がってしまいます。
RFM分析に必要な「顧客ごとの最終購入日からの経過日数」や、「顧客ごとの購入金額」を出すときはどうすれば良いでしょうか。
そこで登場するのがLOD計算です。
LOD計算は集計の粒度をコントロールすることができるのです👏
LOD計算の仕組み
LOD計算とは、中間テーブルの作成を意味します。
こんなLOD計算を作ってみます。
{FIXED[顧客id]:AVG(売上)}
これは顧客ごとの売上の平均を出してね、という式です。
元のデータから顧客id売上を集計して平均を出しています。
これをビュー上の顧客id、製品idに載せてみると以下のようになります。この場合は同じ粒度なので中間テーブルは作成されません。
それでは、LOD計算にない他の粒度のディメンション(この場合は地域)に載せるとどうなるでしょうか。
顧客ごとの売上平均を出した後、中間テーブルで地域が北海道の顧客idを集めます。
ビュー上には地域ごとの、顧客idごとの売上平均が集計されます。
このようにLOD計算では中間テーブルが作られ、LOD計算にはない違う粒度のディメンションでも集計することができます。
LOD計算はパワフルだと言われる所以はここです。
逆をいえばビューにディメンションをおかずとも、ディメンションを追加することができるのです。(ここでは地域ごとの顧客idごとの売上平均が出ていますが、ビューに顧客idはおかれていませんよね。)
LOD計算の作り方
・ { ブレースをつける
・FIXED、INCLUDE、EXCLUDEを選択する
・ディメンションを入れる(場合によっては複数)
・ : コロンを入れる
・集計関数(SUM、AVG、COUNT、MAX、MIN等)、メジャーを入れる
・ } ブレースをつける
まとめ
LOD
何を表しているか。
データの粒度、ディメンションが多ければ多いほど粒度は細かくなる。
LOD計算
集計の粒度をコントロールすることができる
中間テーブルが作られ、LOD計算にはない違う粒度のディメンションでも集計することができる。
ビューにディメンションをおかずとも、ディメンションを追加することができる。
LOD計算は以下のように作る
・ { ブレースをつける
・FIXED、INCLUDE、EXCLUDEを選択する
・ディメンションを入れる(場合によっては複数)
・ : コロンを入れる
・集計関数(SUM、AVG、COUNT、MAX、MIN等)、メジャーを入れる
・ } ブレースをつける
LOD計算の使用例