慣れないと難しいTableauのLOD表現を解説(概要編)
データアナリティクス事業本部の武田です。
今日は、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表現を使うと、カラムをフィールドにいれてなくても、集計の粒度を指定できるようになります。
→「どのカラムをどこのフィールドに入れるか」によって集計の粒度が決まる。
→ フィールドに入れていないカラムを集計の粒度に入れることができる。
3種類のLOD表現
書き方は、下記の形式です。
{ "どのLOD計算" "ディメンション" : "集計関数"}
例えば、カテゴリ別の売上を見たいという場合は、下記のような式になります。
{FIXED[カテゴリ]:SUM(売上)}
LOD表現を使った例
例えば、顧客ごとのオーダー回数を調べて、オーダー回数別の顧客数を調べたいという場合を考えます。オーダーが1回の人は何人、2回の人は何人いるのかという集計です。
まずは顧客ごとの注文回数を求める計算フィールドを作ります。
計算式
{FIXED[顧客 Id]:COUNTD([オーダー Id])}
これを使って、下記のようなオーダー回数別の顧客数グラフを作りました。
他にもこのような使い方があります。
ふりかえり
今日は、上達するのに苦労すると言われるLOD表現について、自分の復習も兼ねてまとめてみました。 一度理解できれば、Tableauの表現力が一気に広がりますので、ぜひ触ってみてください。