Tableauの資格:DATA Saber Programで躓いたポイントまとめてみた➀~LOD編~
マインディアというEC購買データを提供しているスタートアップでデータストラテジストをしている難波です。DATA Saberに絶賛チャレンジ中につき、躓いたポイントをまとめていこうと思います。
今回は、使う場面や使い方がわかりづらいTableauの「LOD(Level Of Detail)表現」について私自身が感じたこんな時に使えるなと思ったシーンをまとめたいと思います。
*計算種類と用途だけすぐ知りたい場合は、まとめへ。
*本記事では、技術的説明について、初心者に向けてもわかりやすくなるようかみ砕いて説明しているため、公式とは違う場合があります。
LOD(Level Of Detail)表現とは
さっそくですが、Tableauに出てくるLODとはどんな計算方法なのでしょうか。
Tableau ヘルプを確認すると以下のように説明されています。
一体どういうことでしょうか。以下の画像を見てみてください。
この画像では、列に売上の合計が入り、行をカテゴリ1とサブカテゴリ1で分けたビューになります。
つまり、今回はサブカテゴリごとの売上の合計を確認しているビューになります。
ここで改めて、LOD表現の定義を見直してみましょう。
とあります。今回の例に当てはめると、現在のビューは、サブカテゴリレベルのものであるが、
これとは違うレベル(粒度)での計算を適用して、このビューで活用できるということになります。
例えば、サブカテゴリ1レベルの計算結果に加え、カテゴリ1レベルや都道府県のレベルを利用して、ビューに追加できるということになります。
それでは実際にLODの種類と使い方を見ていきましょう。
LODの種類
LOD(Level Of Detail)表現には以下、3つの計算方法が存在します。
FIXED
INCLUDE
EXCLUDE
それぞれ先ほどの例を掘り下げて見ていきましょう。
もっとも利用場面が多い?FIXED
FIXEDは、文字通りLODを指定したディメンションに”固定”するものです。ビューの中で使われているディメンションと関係なく、指定したディメンションでメジャーを集計します。
RFM分析などの様に、顧客の売上ごとに売上を固定してグループ化したいなどの用途はよくあるのではないでしょうか?以下は顧客を売上金額ごとにグループ化して表現したものになります。
こんな時にFIXEDが使えます。つまり顧客ごとに売上をFIX(「固定」)して分析に活用することができます。
やり方は簡単で、以下の計算式を作ります。(*名前は「顧客ごとの売上」)
FIXEDはビュー内で、活用するディメンションとは関係なく、利用できるLODになります。
今回は、作成した「顧客ごとの売上」を使ってビンを作成することで、顧客の売上ごとにグループを作り、どの売上層に顧客が多いのか、確認できました。
トランザクション系のデータに必須?INCLUDE
INCLUDEは、ビューに入れているディメンションよりも詳細なディメンション粒度で計算するものです。
特定の都道府県内で発生した売上の平均をオーダーIDのあたりの平均として出したい場合どうすればいいでしょうか。
例を見ていきましょう。以下の画像は都道府県ごとの平均売上を出していますが、これは何の平均でしょうか。
Tableuの基本機能を使ったここで言う「平均」とは、都道府県ごとのレコード数あたりの平均になります。
1つのオーダーIDの中には本来、複数の商品がオーダーされている場合もあり、最小のレコード数とはオーダーIDの中の製品IDの種類数と一致します。オーダーID数=<オーダーされた製品IDの種類数という関係になります。今回は大きいの粒度であるオーダーIDの種類数で平均数を出したいので、オーダーID単位で売り上げをまずまとめる必要があります。
ここでINCLUDEが活用できます。
オーダーIDごとに売上の計算を作成してみましょう。(*名前は「オーダーIDの売上」)
作成した「オーダーIDの売上」を列に追加すると、平均値が確認できました。
表現されている粒度より大きいデータで集計したい EXCLUDE
最後に、EXCLUDEはINCLUDEとは反対の計算する理解をしています。 VizのLODからLOD計算の中で指定したディメンションを除外し、Vizよりも大きい粒度のディメンションで計算をしてくれます。
最初の例をを再度見てみましょう。
行に、「カテゴリ1」と「サブカテゴリ1」を追加して、売上を表現していました。
ここで言う売り上げは、サブカテゴリのレベル(「サブカテゴリごと」)の売り上げを表現しています。
では行に追加しているディメンションを変えずに(見せたまま)カテゴリごとの売上を見せるためにはどうすればいいでしょうか。
ここで「EXCLUDE」が活用できます。
{ EXCLUDE サブカテゴリ1:sum(売上) }の計算フィールドで作成します。(*名前は「カテゴリごとの売上」)
を作成します。
そして作成した計算フィールド(「カテゴリレベルの売上」)を列に追加すると無事カテゴリごとの売上が作成できました。
サブカテゴリ1に対して、それぞれカテゴリ1レベルでの売上計算結果を表示するので、同一カテゴリ1内のサブカテゴリはすべて同じになります。
カテゴリ1のみのデータでも確認してみましょう。
もともとメジャーで出していた「合計(売上)」と「属性(カテゴリレベルの売上)」の値が一致していますね。
まとめ
最後にそれぞれの利用場面を改めて整理した比較表にしました。
これらが活用できると、Tableauでの表現方法が一気に広がると思います。