見出し画像

Tableauの資格:DATA Saber Programで躓いたポイントまとめてみた➀~LOD編~

マインディアというEC購買データを提供しているスタートアップでデータストラテジストをしている難波です。DATA Saberに絶賛チャレンジ中につき、躓いたポイントをまとめていこうと思います。

今回は、使う場面や使い方がわかりづらいTableauの「LOD(Level Of Detail)表現」について私自身が感じたこんな時に使えるなと思ったシーンをまとめたいと思います。

*計算種類と用途だけすぐ知りたい場合は、まとめへ。
*本記事では、技術的説明について、初心者に向けてもわかりやすくなるようかみ砕いて説明しているため、公式とは違う場合があります。

LOD(Level Of Detail)表現とは

さっそくですが、Tableauに出てくるLODとはどんな計算方法なのでしょうか。
Tableau ヘルプを確認すると以下のように説明されています。

詳細レベルの式 (LOD 式としても知られる) ではデータ ソース レベルおよびビジュアライゼーション レベルで値を計算できます。ただし、LOD 表現は計算したい粒度のレベルをさらにコントロール可能です。粒度のより細かいレベル (INCLUDE)、それよりも粒度の大きなレベル (EXCLUDE)、またはまったく個別のレベル (FIXED) で計算を行えます。

https://help.tableau.com/current/pro/desktop/ja-jp/calculations_calculatedfields_lod.htm

一体どういうことでしょうか。以下の画像を見てみてください。

画像➀:カテゴリ1とサブカテゴリ1で集計した売り上げ

この画像では、列に売上の合計が入り、行をカテゴリ1とサブカテゴリ1で分けたビューになります。
つまり、今回はサブカテゴリごとの売上の合計を確認しているビューになります。
ここで改めて、LOD表現の定義を見直してみましょう。

”詳細レベルの式 (LOD 式としても知られる) ではデータ ソース レベルおよびビジュアライゼーション レベルで値を計算できます。”

https://help.tableau.com/current/pro/desktop/ja-jp/calculations_calculatedfields_lod.htm

とあります。今回の例に当てはめると、現在のビューは、サブカテゴリレベルのものであるが、
これとは違うレベル(粒度)での計算を適用して、このビューで活用できるということになります。

例えば、サブカテゴリ1レベルの計算結果に加え、カテゴリ1レベルや都道府県のレベルを利用して、ビューに追加できるということになります。
それでは実際にLODの種類と使い方を見ていきましょう。

LODの種類

LOD(Level Of Detail)表現には以下、3つの計算方法が存在します。

  • FIXED

  • INCLUDE

  • EXCLUDE

それぞれ先ほどの例を掘り下げて見ていきましょう。

もっとも利用場面が多い?FIXED

FIXEDは、文字通りLODを指定したディメンションに”固定”するものです。ビューの中で使われているディメンションと関係なく、指定したディメンションでメジャーを集計します。

▼計算式
{FIXED ディメンション1, ディメンション2,・・・: 集計関数(SUM(), AVG()など)}

RFM分析などの様に、顧客の売上ごとに売上を固定してグループ化したいなどの用途はよくあるのではないでしょうか?以下は顧客を売上金額ごとにグループ化して表現したものになります。

画像②:売上金額の金額帯別の顧客分布

こんな時にFIXEDが使えます。つまり顧客ごとに売上をFIX(「固定」)して分析に活用することができます。
やり方は簡単で、以下の計算式を作ります。(*名前は「顧客ごとの売上」)

画像③:FIXEDの計算例

FIXEDはビュー内で、活用するディメンションとは関係なく、利用できるLODになります。
今回は、作成した「顧客ごとの売上」を使ってビンを作成することで、顧客の売上ごとにグループを作り、どの売上層に顧客が多いのか、確認できました。

トランザクション系のデータに必須?INCLUDE

INCLUDEは、ビューに入れているディメンションよりも詳細なディメンション粒度で計算するものです。

▼計算式
{INCLUDE ディメンション1, ディメンション2,・・・: 集計関数(SUM(), AVG()など)}

特定の都道府県内で発生した売上の平均をオーダーIDのあたりの平均として出したい場合どうすればいいでしょうか。
例を見ていきましょう。以下の画像は都道府県ごとの平均売上を出していますが、これは何の平均でしょうか。
Tableuの基本機能を使ったここで言う「平均」とは、都道府県ごとのレコード数あたりの平均になります。

画像④:都道府県別の平均売上

1つのオーダーIDの中には本来、複数の商品がオーダーされている場合もあり、最小のレコード数とはオーダーIDの中の製品IDの種類数と一致します。オーダーID数=<オーダーされた製品IDの種類数という関係になります。今回は大きいの粒度であるオーダーIDの種類数で平均数を出したいので、オーダーID単位で売り上げをまずまとめる必要があります。

画像➄:オーダーIDと製品ID

ここでINCLUDEが活用できます。
オーダーIDごとに売上の計算を作成してみましょう。(*名前は「オーダーIDの売上」)

画像⑥:INCLUDEの計算例

作成した「オーダーIDの売上」を列に追加すると、平均値が確認できました。

画像⑦:INCLUDEを使わない平均値(青)vsINCLUDEを使った際の平均値(オレンジ)

表現されている粒度より大きいデータで集計したい EXCLUDE

最後に、EXCLUDEはINCLUDEとは反対の計算する理解をしています。 VizのLODからLOD計算の中で指定したディメンションを除外し、Vizよりも大きい粒度のディメンションで計算をしてくれます。

▼計算式
{ EXCLUDE ディメンション1, ディメンション2,・・・: 集計関数(SUM(), AVG()など)}

最初の例をを再度見てみましょう。
行に、「カテゴリ1」と「サブカテゴリ1」を追加して、売上を表現していました。

画像➀再掲


ここで言う売り上げは、サブカテゴリのレベル(「サブカテゴリごと」)の売り上げを表現しています。
では行に追加しているディメンションを変えずに(見せたまま)カテゴリごとの売上を見せるためにはどうすればいいでしょうか。
ここで「EXCLUDE」が活用できます。
{ EXCLUDE サブカテゴリ1:sum(売上) }の計算フィールドで作成します。(*名前は「カテゴリごとの売上」)
を作成します。

画像⑧:EXCLUDEの計算例

そして作成した計算フィールド(「カテゴリレベルの売上」)を列に追加すると無事カテゴリごとの売上が作成できました。
サブカテゴリ1に対して、それぞれカテゴリ1レベルでの売上計算結果を表示するので、同一カテゴリ1内のサブカテゴリはすべて同じになります。

画像⑨:EXCLUDEを使わない合計値(青)vsEXCLUDEを使った際の合計値(オレンジ)

カテゴリ1のみのデータでも確認してみましょう。
もともとメジャーで出していた「合計(売上)」と「属性(カテゴリレベルの売上)」の値が一致していますね。

画像⑩:計算結果の照合

まとめ

最後にそれぞれの利用場面を改めて整理した比較表にしました。
これらが活用できると、Tableauでの表現方法が一気に広がると思います。


この記事が気に入ったらサポートをしてみませんか?