「LOD(Level of Detail/詳細レベル)計算」は、Tableauのパワフルな機能であるにも関わらず、その理解は、Tableauの学習を始めた多くの方が突き当たる大きな壁の一つです。
「LODは中間テーブルと考えればいいんですよ」「LODは習うより慣れろ」と言われたことがあるかもしれません。しかし、そんなことを言われてもよくわからなかった方が多いでしょう。そして、「FIXED」など(FIXED、INCLUDE、EXCLUDEのことを正しくは”スコーピングキーワード”と言います。)で計算フィールドを作成・練習した方も多いでしょう。しかし、使いこなすレベルまでいくには、根本的なLODの概念の知識、集計や粒度の知識が必要です。なぜなら、初見データの個別具体的な課題は、これらの根本的で根底的な知識を組み合わせてはじめて解くことができるからです。
ですので、本記事では、Tableau LOD計算の個別具体的な解決策を提案するのではなく、データのLOD、VizLOD、LOD計算の「LOD群」を解説します。特にVizLODについては、海外では一般的に語られているのですが、日本では殆ど語られません。この整理や理解を飛ばし、LOD計算を間違ってされている方はとても多いです。
このようなお声も頂けました。
今まで見たLOD計算の説明で一番わかりやすかった(覚えたとは言ってない)。 https://t.co/7Gm4qJdbUb
— 野口 真史 @ データビジネスの人 (@noguchimasahit) April 6, 2020
データ可視化そのものが知りたい方は、こちらの記事からどうぞ。
目次
何のLOD(Level of Detail)を話しているのかを明確にすることがLOD計算を理解する第一歩である
LODは日本語で詳細レベルと言われ、一般的に「データの粒度(Granurarity of Data)」と定義づけられます。Tableau内で行われるLOD表現(LOD計算)のことを省略して「LOD」と仰っていらっしゃる方はとても多いのですが、「LOD」という言葉自体は、単に「詳細レベル」(粒度)のことを指します。LODという言葉の定義が人や文脈によって異なることが、多くの人が「LOD計算」を理解することを阻害している一つとも言えますので、以降解説します。
データのLOD
データ分析、データ視覚化の前に、データの詳細レベルを理解することは最も重要です。「データの一行一行が何でできているのか」「一行は何を意味しているか」を理解することから全てスタートします。
下図を見てください。購買のデータセット(サンプルスーパーストア)です。
下図を見てください。これを見ると、データの詳細レベルは1注文レベルで一意にはなっていない(これを「ユニークではない」という言い方をします)ということがわかります。なぜなら、同じオーダーIDが複数あるからです。
このデータは購買データですので、例えばAmazonでの購入を想像してみてください。一つの注文に対して、複数のアイテムがあるはずです。私は花粉防御スプレー、ティッシュ、トイレットペーパーを購入したら、それらがそれぞれ行レベルにきているイメージです。下図を見ると、そうなっているのがわかりますね。
このデータソースの粒度は、一購入における製品別で行ができています。
データ分析/視覚化を始める前には、「データの一行一行が何でできているのか」「一行は何を意味しているか」を理解することが大切です。
VizLOD
VizLODとは、Tableau内のビジュアライゼーション(Vizと言います)でのLODです。
例えば、下図ではこのビジュアライゼーションのVizLODは「地域」です。
このデータセットに「地域」は8つ入っているため、地域が8つ表示されています。
分析を進めていくともう少し複雑なことをしたくなるはずです。ディメンションを追加して、下図のようにカテゴリーと地域ではどうでしょう。
それぞれのデータポイント(正確には、マークと呼びます)が「カテゴリ」と「地域」の組み合わせの状態です。「地域」だけではなくなりましたね。組み合わせていますので8つ以上のデータ ポイントになっています。なぜなら、2つのディメンションを組み合わせているからです。それぞれのデータポイントは、固有の地域、固有のサブカテゴリlの組み合わせとなっており、多くのデータポイントが見えている状態です。
ここで、私はそれぞれのフィールドを異なる場所(シェルフ)に入れました。カテゴリー、地域をマークカードに入れ、利益と売上とそれぞれ行と列に入れました。Tableauでは、どの場所(どのシェルフ)にフィールドを入れるかにより、ビューの詳細レベル(VizLOD)に異なる影響を与えます。次に、VizLODにインパクトがある場所を解説します。
ここで、異なる場所(シェルフ)がどのようにビュー内の詳細レベルに影響を与えているのかを解説します。
VizLOD(詳細レベル)を決定づける場所
下図をみてください。ドラッグアンドドロップすると詳細レベルを決定づける場所(シェルフ)に赤くハイライトしてみました。フィルターとツールヒント以外ほぼ全てにハイライトがされています。
LOD(詳細レベル)に影響がない場所
ツールヒント(ツールチップ)とフィルターは詳細レベルにインパクトを与えません。
LOD計算
データLODは、収集されたデータが持っているデータの粒度、そしてVizLODとはTableauのビュー内で形成されるビジュアライゼーションの粒度のことと理解できたかと思います。ここまで理解して、ようやくLOD計算を理解する準備が整いました。
前節では、「地域」を入れてそのVizLODで集計がされる状態を見てきました。
例えば、下記のような計算ですと、VizLODに「地域」のディメンションを入れた場合、そのまま「地域」で売上の平均が計算されます。
ここで、このVizLODに関係のない(VizLODと独立して)計算をしたい場合に登場するのがLOD計算です。
これは、VizLODに関係なく、地域のLevel of Detailで計算される、ということです。
LODはなぜパワフルかというと、このVizLODにないディメンションで集計を使うことができるからです。
「データ視覚化/ダッシュボードデザインを成功させる95のチェックリスト」をダウンロードする
粒度と集計度合いは反対に動く
それぞれのLOD計算を理解するために、粒度と集計の度合いの関係性について知っておく必要があります。粒度と集計(※)の度合いは反対方向に動きます。
Tableau内で、ディメンションとメジャーをビュー内に入れると、メジャーはビューの中にあるディメンションの切り口で集計されます。ディメンションを増やせば粒度は細かく刻まれた状態になっていき、最後まで刻むと、当初のデータの行レベルに行き着くことなります。
下図を見てください。
上記を見ると、どのようにそれらが反対方向に動くのかイメージができるかと思います。ここでは、集計の度合いが高ければ高いほど、粒度としてはざっくりし、逆の場合も同じ」というイメージを理解できれば良いです。
ディメンションをどんどん入れていき、粒度を細かくすれば、あなたが本来もっていたデータの詳細レベルにドリルダウンされ、データ自体の行レベルにどんどん近づきます。
※ちなみに、ここでいう「集計」の意味は、集計関数を使った計算、という意味です。
集計関数:SUM/AVG/MAXなど
非集計関数:ROUND/YEAR/ZNなど
上記の例(図)では、VizLODに3つのディメンションが入っている状態です。ビューにメジャーのフィールド(ピル)を入れた時、ビューにある全てのメジャーがこの3つのディメンションの組み合わせで集計されます。
TableauのLOD計算がパワフルである所以は、VizLODにあるものと異なるLOD(詳細レベル)で計算をすることが可能だからです。つまりこれは、今VizLODはディメンションが3つ入っていますが、LOD計算を使ってディメンション1とディメンション2だけを使って計算ができる、ということです。この機能はデータ分析に多くの柔軟性と自由度をもたらします。ビュー(ビジュアライゼーション)を変えることなく、詳細レベルをコントロールをすることができるためです。
TableauのLOD計算は3種類あり、EXCLUDE、INCLUDEそしてFIXEDがあります。
どれも、下記のように使います。
・{から始める
・FIXED、EXCLUDE、INCLUDEを計算フィールドにタイプする
・ディメンションが複数ある場合は間にカンマを入れる
・その後、コロン”:”をつける
・集計関数を入れる (SUM(), AVG(), MIN(), etc.…)
・}で閉じる
FIXED
FIXEDは、宣言したディメンション以外の存在を無視します。いわば、何からも独立した状態です。VizLODから独立して動きます。
FIXEDは3つのLOD計算の中で最もパワフルなものでしょう。FIXEDは、EXCLUDEとINCLUDEができることに加えてその他多くのことができます。下図に、FIXEDの2つの使い方を示します。顧客区分の中で最も大きい売上を見る場合です。顧客区分には多くのオーダーが入っていますが、この中で、最も大きい売上の情報が入った列が欲しいという時です。それが出せれば、一つの同じビュー内で、顧客区分内での合計売上を見ることができます。
もう一つの例は、顧客区分の中での最初のオーダー日を出そうとする時です。それぞれの顧客区分ではたくさんのオーダー日をもっていますが、最も早いオーダー日を知りたい場合です。
EXCLUDE
EXCLUDEは、ビューに配置されているけれど、集計に不要なディメンションがある場合それを除外して集計します。
メジャーの集計が、VizLODより上がっている状態です。
例えばビュー内にディメンションが2つあるとしましょう。カテゴリ、サブカテゴリとします。2つのディメンションでの売上で集計したいけれど、カテゴリだけでの集計でも見たいとします。この場合、サブカテゴリを除外すれば、サブカテゴリを無視して、カテゴリでの集計を出すことができます。
その他の選択肢としては、ただサブカテゴリをビューから出して、ただカテゴリだけをビューに入れ、VizLODとなったカテゴリで集計させる、というやり方しかありません。
INCLUDE
INCLUDEはすでにビュー内に配置されているディメンションを考慮します。VizLODを起点とするのはEXCLUDEと同じです。粒度を細かく、行レベルに近づいていく方向にするのがINCLUDEです。
また、カテゴリとサブカゴリから始めましょう。「顧客区分」というディメンションを入れましょう。顧客の分類です。顧客区分ごとの平均の売上を知りたい、という時に下図の通りINCLUDEを使って実現することが可能です。
まとめ
Tableauの機能として、LOD計算は革命的でした。なぜなら、分析のフローやご自身のひらめきをわかせてくれる脳のフローを止めてしまうものの一つがこの異なる詳細レベルでの集計であり、それを見事に解決したからです。
LOD計算が必要な問いは、問うのは簡単なのですが、答えるのは難しいものが多いです。
「1000以上の注文がある日の日数を四半期ごとに見たいな」
このような質問にスピーディに答えるために、Tableau9.0はLOD計算(表現)がリリースされました。
BIツールの導入をご検討中であればぜひ一度データビズラボへお問い合わせください。
BIツール導入支援やその他データ活用について様々なサービスをご提供しております。
コメント