慣れないと難しいTableauのLOD表現を解説(概要編)

2023.03.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

データアナリティクス事業本部の武田です。

今日は、TableauのLOD表現について概要の説明をします。LOD表現はとても便利な機能なのですが、巷では、「Tableauの初心者から中級者への壁はLOD」とも言われているくらい、最初は難しく感じる機能です。

LOD表現って何?

LODとは、Level of Detailのことです。 データをどういう単位で集計するのか、集計するデータの粒度のことを言います。

(と言われて何のことだかわかるなら、この記事は不要ですよね。)

まずは1行ずつのデータがどういう意味かを把握しよう

データを受け取ったときに、私がまず真っ先に確認するのは、1行ずつのデータが何を意味しているのかです。 その際に「ユニークキーは何か?」というのが見るポイントになります。

「ユニークキー」というのは、その値で1行ずつ一意になる(その行を特定できる)ものです。

Tableauのスーパーストアのデータの場合、行IDがユニークキーになります。 オーダーIDはユニークキーではないのか?と思われるかもしれませんが、同じオーダーIDで複数行があるので、オーダーIDはユニークキーでは ありません。

このデータから、「複数の製品を同時に買った場合、データは製品IDごとに1行ずつ分けて作られていて、その時のオーダーIDは一つ」ということを確認します。

つまり、データの最も細かい粒度は行ID単位で、同じ日に複数の製品を買った場合は製品ID単位まで見ることができる、ということになります。

この1行ずつのデータを「どこからどこまで集計するのか」を考えるのが、今回のテーマになります。

TableauのダッシュボードのLOD(詳細レベル)はどこで決まるか?

例えば、スーパーストアのデータで、売上を集計するとします。 この時、SUMという集計関数を使いますが、SUMする対象は「該当する行の全ての売上」となります。 該当する行というのは、Tableauは画面上に出しているデータソースの行になります。

下記は、カテゴリを行に入れていて、カテゴリ単位での売上を合計して出してくれます。この時の集計の粒度はカテゴリです。

下記は、集計の粒度がカテゴリの場合の散布図です。軸が売上だけなので散布図らしくはないのですが、1つ1つのプロットが集計された粒度になります。

次は、集計の粒度を変えてみます。下記は、サブカテゴリを行に入れていて、サブカテゴリ単位での売上を合計して出してくれます。この時の集計の粒度はサブカテゴリです。

下記は、集計の粒度がサブカテゴリの場合の散布図です。1つ1つのプロットはサブカテゴリ別で、色はカテゴリごとにしています。

このように、Tableauのダッシュボードは「どのカラムをどこのフィールドに入れるか」によって、データの粒度が自動的に切り替わっています。

Tableauは「どのカラムをどこのフィールドに入れるか」によってデータの粒度を決めているのですが、実は粒度に関係のない場所もあります。

データの粒度を変更する場所は下記の通りです。

逆にデータの粒度を変更しない場所は下記の通りです。

上記説明は、下記リンク先のホワイトペーパーを参考にしています。

LOD表現

Tableauは「どのカラムをどこのフィールドに入れるか」によって、データの粒度を決めていますが、 LOD表現を使うと、カラムをフィールドにいれてなくても、集計の粒度を指定できるようになります。

  • 通常の集計関数(SUM等)の場合

    →「どのカラムをどこのフィールドに入れるか」によって集計の粒度が決まる。

  • LOD表現の場合

    → フィールドに入れていないカラムを集計の粒度に入れることができる。

  • 3種類のLOD表現

  • FIXED:宣言したディメンションだけで固定し、それ以外のディメンションを無視したいときに使います。
  • INCLUDE:配置されたディメンションに、さらにディメンションを追加して計算したいときに使います。
  • EXCLUDE:集計に不要なディメンションが配置されていた場合に、それを除外して計算したいときに使います。
  • 書き方は、下記の形式です。

    { "どのLOD計算"  "ディメンション" : "集計関数"}

    例えば、カテゴリ別の売上を見たいという場合は、下記のような式になります。

    {FIXED[カテゴリ]:SUM(売上)}

    LOD表現を使った例

    例えば、顧客ごとのオーダー回数を調べて、オーダー回数別の顧客数を調べたいという場合を考えます。オーダーが1回の人は何人、2回の人は何人いるのかという集計です。

    まずは顧客ごとの注文回数を求める計算フィールドを作ります。

    計算式

    {FIXED[顧客 Id]:COUNTD([オーダー Id])}

    これを使って、下記のようなオーダー回数別の顧客数グラフを作りました。

    他にもこのような使い方があります。

    ふりかえり

    今日は、上達するのに苦労すると言われるLOD表現について、自分の復習も兼ねてまとめてみました。 一度理解できれば、Tableauの表現力が一気に広がりますので、ぜひ触ってみてください。