今回はTableauレベルを高めるために絶対外せないLOD(Level of Detail)表現について解説したいと思う。
LOD表現とは計算したいデータ集計の粒度(細かさ)をコントロールできるTableau特有の関数のことだ。
LOD表現のことをLOD計算という人も多く、呼び方が揺れているのだが、LOD表現=LOD計算のことであることを頭に入れておいて欲しい。
このLOD表現を理解するためには、まずLOD(Level of Detail)とは何かを把握しておく必要があるのでその説明から始めていこうと思う。
Contents
LODとは?
LODとはLevel of Detailの略で日本語では「詳細レベル」と定義される。
LODは「どのディメンションでメジャーをまとめるか?」を示している。
具体例を確認しよう。
例えば、下記のカテゴリ別売上の場合。
上図ではメジャーである「売上」が「カテゴリ」ごとに分かれている。
そのため、LOD(詳細レベル)はカテゴリとなる。
もう1つ、カテゴリごとの顧客区分別の売上の場合の例を挙げよう。
この場合、ディメンションとして「カテゴリ」と「顧客区分」の2つが行シェルフに入っており、それにより売上が分かれている。
つまり、カテゴリごと、顧客区分ごとにメジャーである売上が分かれているので、この場合のLOD(詳細レベル)=カテゴリ、顧客区分 となる。
具体例でLODを確認していくと少しずつLODというものが何なのかが整理できてくる。
混乱した時は「メジャーであるフィールドは~ごとに分かれているのか?」と考えてみよう。
それでLODを少しは理解しやすくなるはずだ
LOD表現を明確に理解するためには下記を把握しておく必要があるので、ここで整理していきたい。
- データのLOD
- ビューのLOD
- LOD表現
データのLOD
データのLODとはデータ1行1行のおける詳細レベルのことだ。
データ1行1行が一意(ユニーク)になっている粒度(細かさ)のことを指している。
例えば、下記の顧客マスタデータの場合。
上記顧客マスタの場合、データ1行1行は会員番号ごとにユニーク(重複行がない)になっている。
そのため、データのLOD(詳細レベル)は会員番号となる。
データのLODはIDや会員番号などが多いが、必ずしもそうではないので注意が必要だ。
例えば、サンプルスーパーストアの下記購買データの場合、データのLODはオーダーIDではない。
上記データの場合、同じオーダーIDの行がいくつかあり、重複があるため、オーダーIDだけだとデータ1行1行がユニークとならない。
オーダーIDと製品名を組み合わせることで初めてデータ1行1行がユニークとなる。
そのため、上記データのデータのLOD(詳細レベル)はオーダーID、製品名となるのだ。
ダッシュボードを作成したり、Tableau Prepでデータ整形を行う際は、元のデータの粒度=データのLODは何なのか?を明確に理解することが非常に大切だ。
ビューのLOD
ビューのLODとは、Tableau内のビジュアライゼーションにおける詳細レベルのことだ。
データのLODがデータ1行1行がユニークになる詳細レベルだったのに対し、ビューのLODは行シェルフや列シェルフ、各種カードにドロップしたディメンションでまとめられたデータの粒度のことを指す。
例えば、下記カテゴリ別の売上の場合、カテゴリごとに売上が分かれているので、ビューのLODはカテゴリとなる。
Tableauでグラフや表を作成する時には
「今のビューのLODは何か?」
を常に意識するのが大切だ。
シート上にはこのビューのLODに影響を与える場所もあれば、何も影響しない場所もあるので、その点を整理しておこう。
ビューのLODに影響を与える場所
ビューのLODに影響を与える場所(シェルフ)は下記の通りだ。
フィルターとツールヒント以外はビューのLODに影響を与える。
実際にメジャーをどこかにドロップして、上図の赤枠の箇所にディメンションをドロップしてみるとそのディメンションごとにメジャーの値が分けられることが把握できると思うので、是非試してみて体感で理解しておくのがおすすめだ。
ここまでデータのLODとビューのLODを説明してきた。
この2つがLOD表現を理解する土台となってくれる。
LOD表現
LOD表現とは計算したいデータ集計の粒度(細かさ)をコントロールできるTableau特有の関数のことだ。
LOD表現を使うことで、前述したビューのLODとは異なるデータの粒度で集計を行うことができる。
そのため、ダッシュボード上での表現を大幅に広げて、Tableauで出来ることを飛躍的に増やしてくれる。
例えば、サンプルスーパーストアのデータを使用して下記のように「各カテゴリにおけるサブカテゴリごとの平均売上を表示したい」という時などにLOD表現は便利だ。
LOD表現を使う前の上図左側では「データソースの行単位での平均売上」がカテゴリごとに表示されているが、右側では「サブカテゴリごとの平均売上」がカテゴリごとに表示されている。
Tableauにおける通常の集計(合計とか平均など)で注意が必要なのは、データソースの行単位でしか集計できないということだ。
つまり、サンプルスーパーストアの購買データの場合、集計方法=平均にした場合、下記赤枠の売上が平均される。
そのため、通常は「各カテゴリにおけるサブカテゴリごとの平均売上」を表示したい場合は、元のデータソースの行レベルの粒度をサブカテゴリ単位に変えない限り実現することができない。
これを解消してくれるのがLOD表現なのだ。
LOD表現は全部で下記3種類ある。
- FIXED関数
- INCLUDE関数
- EXCLUDE関数
それぞれの違いは下記の通りだ。
この中で実務上最もよく使うのがFIXED関数となるので、これから覚える人はまずFIXED関数を覚えていこう!
INCLUDE関数はそれなりに使う機会があるが、EXCLUDE関数を使うことは結構少ないのが個人的な体感だ。
それぞれどのような特徴があるかを見ていこう。
FIXED関数
FIXED関数は指定したディメンションでLOD(詳細レベル)を固定するものだ。
FIXEDを訳すと「固定した」という意味になるので、意味自体は把握しやすいと思う。
ビューのLODがどんなディメンションであっても、FIXED関数はそれを無視して指定したディメンションでLODを固定する働きをする。
例えば、ビューのLOD=「都道府県」の場合でも、それよりも粒度の大きい「地域」で下記のようにLODを固定することも出来る。
逆に「都道府県」よりも粒度の細かい「市区町村」で粒度を固定することも出来る。
これにより、「各都道府県における市区町村ごとの平均売上」を取得することができる。
上図の青枠は通常の集計なので「データソースの行単位での売上平均」となっている一方、赤枠はFIXEDにより「各都道府県における市区町村ごとの売上平均」となっている。
このようにFIXED関数はビューに入っていないディメンションを使用して集計したり、ビューに入っているディメンションを無視して集計したりすることができる。
多少の使い分けが必要な時はあるが、基本的にはこれから説明するINCLUDE関数やEXCLUDE関数で出来ることはFIXED関数で出来る。
INCLUDE関数
INCLUDE関数はビューのLODにINCLUDE関数で指定したディメンションを加えて、ビューのLODよりも細かいデータの粒度で集計をするものだ。
INCLUDEは訳すと「含める」という意味なので、ビューのLODにINCLUDEで指定したディメンションを含める(加える)というイメージを持っておくと整理しやすいと思う。
先ほどの、各都道府県における市区町村ごとの平均売上はINCLUDE関数で下記のように指定しても同じ結果を得ることができる。
ビューのLODは都道府県だが、そのビューに含まれていない市区町村のディメンションを使用して集計をし、その結果が表示している。
このようにINCLUDE関数はビューのLODに含まれていないディメンションを追加し、それを使用して集計をした結果をビューの表示に返してくれるのだ。
EXCLUDE関数
EXCLUDE関数はINCLUDE関数と逆だ。
ビューのLODからEXCLUDE関数で指定したディメンションを除外して、ビューのLODよりも粗い粒度で集計をするものだ。
EXCLUDEは訳すと「除外する」だから、ビューのLODのディメンションから指定したディメンションを除外する、というイメージを持っておくと整理しやすいと思う。
例えば、各地域における都道府県ごとの合計売上を表示しているグラフからEXCLUDEを使用して、都道府県のディメンションを除外して集計すると下記のようになる。
ビューに入っている地域と都道府県のディメンションの内、EXCLUDEで都道府県のディメンションを除外しているので、地域ごとの合計売上が各行に表示されているのがお分かりいただけると思う。
もし、都道府県に加えて地域もEXCLUDEで除外した場合は下記のようにサンプルスーパーストアの購買データの全売上合計が各行に表示される。
このようにEXCLUDE関数はビューのLODから指定したディメンションを集計から除外してくれる関数だ。
これを母数に使用することにより、各地域ごとの都道府県売上割合を表示させたり、各カテゴリごとのサブカテゴリごとの売上割合を表示させることができる。
ただし、EXCLUDE関数は表計算で代用できる場合も結構あるので、そこまで頻繁に使う機会はないと思われる。
まとめ
今回はLOD表現の概要を前提となるデータのLODとビューのLODを含めてご紹介した。
だいぶ長くなってしまったので、FIXED関数やINCLUDE関数、EXCLUDE関数の詳細な説明は別の記事で1つ1つの関数に焦点を当てて解説していきたいと思う。
LOD表現はビューでまとめたデータの粒度=ビューのLODとは異なる粒度でデータを集計して表示することができる。そのため、使いこなせるようになれば相当Tableauで出来ることが増えるので、メリットは相当大きい。
本記事を参考にLOD表現を理解して活用できるようになってもらえると嬉しい。
他のTableauに関するよくある質問は下記でまとめているので参考にして欲しい。