LOD表現の解説とTableau Desktop 2021.1の新機能クイックLODの紹介

こんにちはAIチームの友松です。

今回はTableauの入門で躓くLOD表現とTableau Desktop2021.1で追加されたクイックLODについての記事を書きます。

LOD表現

LOD表現, Level of Detail(詳細レベル)表現は集計の粒度を指定して集計を行うことができる表現です。LOD表現にはFIXED, INCLUDE, EXCLUDEの3種類があります。

FIXEDビュー内のディメンションに関係なく、指定されたディメンションを使用して値を計算します。
INCLUDEビューに含まれるディメンションに加えて、指定されたディメンションを使用して値を計算します。
EXCLUDEビューに含まれるディメンションから、指定されたディメンションを除外して値を計算します。

ここからは、もっともよく使われるFIXEDを例に説明を行います。

FIXED式

FIXEDによる計算式は以下によって記述します。

{ FIXED [ディメンション]: 集計式 }

Tableau Desktopにデフォルトで用意されているサンプルデータストアを用いてFIXED式を書いてみようと思います。

上記の式は集計の粒度としてディメンションの[カテゴリ]を指定して、その粒度で売上の合計を計算します。

内部的には図のような計算が行われています。SQL的な解釈をすると

SELECT 
    カテゴリ, 
    SUM(売上) 
FROM 
    table 
GROUP BY 
    カテゴリ

となります。

実際にTableauでサンプルデータストアでどのような結果になるか確認します。

先程作成した[カテゴリごとの売上]を列に、[カテゴリ]を行に配置すると実際の値を確認することができます。

ここで気づいた方もいらっしゃるかもしれませんが、列の[カテゴリごとの売上]をSUM(売上)に変更しても全く同じ結果になります。試しに、並べて配置を行ってみます。

FIXEDはペイン上に配置したディメンションと同じ粒度で集計を行ったときは効果を発揮しません。

FIXEDの解釈

①ペインのディメンションを追加してみる

先程の説明でペイン上に配置したディメンションと同じ粒度の集計は効果を発揮しないと説明しました。では、別のディメンションを追加した場合はどのようになるのかを見ていきます。

こちらは先程と同様にFIXEDで計算した売上の合計と、通常の売上の合計を示しています。ディメンションとしてはカテゴリを選択しています。

ここにサブカテゴリを追加すると以下の図のようになります。

左側のFIXEDで計算したほうは、サブカテゴリを追加してもカテゴリ毎に全く同じ値になっています。一方で右側はカテゴリ, サブカテゴリごとにそれぞれ売上の合計が計算されています。

FIXEDは冒頭でも説明したとおり、ペインと違う集計粒度を指定したときに効果を発揮します。

あまり知られていませんがLODで以下のように集計の粒度を全く指定しない方法もあります。

{SUM(売上)}

これを先程の図の一番左側に追加すると

すべてのディメンションを無視した売上の合計(全データの売上の合計)になります。

②FIXED式の平均

FIXEDの解釈としては、中間テーブルを裏側で作成するという考え方が理解しやすいです。もう一つの例としてFIXED式で計算した値の平均を例に説明したいと思います。

左側の通常の売上の合計を平均すると全データが6件あり、合計が210,000円なので、平均は210000/6=35000円となります。

右側のFIXEDを用いてカテゴリ毎に売上の合計を計算した値の平均は、合計は同じく210,000円ですが、データの数が3件となり、210000/3=70000円となります。

Tableauのサンプルデータストアでも結果が異なることが確認できます。

LOD表現とフィルター

LOD表現のハマりポイントでもある、フィルターの順序について説明を行いたいと思います

フィルターのかかる順序
画像引用: https://help.tableau.com/current/pro/desktop/ja-jp/order_of_operations.htm

TableauのFilterは

  • 抽出フィルター
  • データソースフィルター
  • コンテキストフィルター
  • ディメンションフィルター
  • メジャーフィルター
  • 表計算フィルター

の6種類が存在し、フィルターおよび計算が行われる順序が存在します。

Fixed LODを見てもらうとディメンションフィルターやメジャーフィルターの前にかかることがわかります。

つまり、ディメンションフィルターに任意のディメンションを指定しても、FIXEDの値はディメンションフィルターがかかる前のテーブルをもとに計算されます。

サブカテゴリ=椅子をFIXEDの計算からも除外したい場合には、コンテキストフィルターに指定する必要があります。コンテキストフィルターは、フィルターペインでコンテキストフィルターに変換したい項目を選択し、コンテキストに追加を選ぶことで行なえます。

コンテキストフィルターに指定することで、FIXEDの結果も上記のように変わります。

LODとフィルターのかかる順序はかなりのハマりポイントで、自分も当初は想定していた結果と違う値が表示されて悩みました。

Tableau 2021.1の新機能クイックLOD

前置きが長くなりましたが、シンプルなFIXED表現は計算式を書く必要がなくなり、ビュー上の操作だけで完結するようになりました。

方法1

ディメンションとメジャーをそれぞれ選択肢、右クリック->作成->LOD計算…を選択します。

自動で、計算フィールドが立ち上がり、FIXED計算が行われています。

方法2

メジャーフィールド(今回は[売上])をコマンドキー(Windowsはコントロールキー)を押すながらディメンションフィールド(今回は[カテゴリ])にドラッグアンドドロップすることで作成することができます。

まとめ

今回は初級から中級へのステップアップで大きな壁となるLOD表現のうち、FIXED計算について説明を行いました。また、Tableau2021.1から使用可能なクイックLODについても説明を行いました。

従来、FIXED式をいちいち定義するのは面倒なこともありましたが、簡単なLOD表現であればクイックLODを使用することができ、より早く可視化が可能になりました。

参考