Tableau(タブロー)のLOD式のひとつであるFIXED関数の使い方・用法を解説します。色々な使用例も合わせて紹介しますので参考にしてみてください。
FIXED関数とはLOD式のひとつなので、まずはLOD表現が何かについて説明します。理解されている方は飛ばしてください。
LOD表現とは?
LODとはLevel of Detail(詳細レベル)の略称でデータをどのような粒度(粗さ・細かさ)で集計しているかを意味しています。具体的にはデータをどのディメンションを使って集計しているか(切り分けているか)を表しています。
下図ではディメンション[カテゴリ]を使ってメジャー[売上]データを集計しており、[カテゴリ]内の”家具”、”家電”、”事務用品”の3つにメジャー[売上]を切り分けて集計しています。そのためこのビューのLODは[カテゴリ]のみです。
ビューのLOD(集計レベル)
Tableauでグラフや表を作成するときはワークシート(ビュー)でデータをディメンションにより集計して使っています。そのためビュー毎にLODが決まっています。
ビューのLOD(集計レベル)には赤枠で囲んであるビュー・シェルフ・マークカード(ツールヒント除く)・ページにセットされている全てのディメンションが適用されます。ビューで使用するメジャーは全てのディメンションによって切り分けられて集計されています。
例として下図の場合、ワークシート上には[カテゴリ][オーダー日][顧客区分]の3つディメンションが使われており ビュー上のメジャー[売上]はそれらのディメンションにより36個に切り分けられて集計されています。このようにビューのLOD(集計レベル)は使っている全てのディメンションで決まり、それに従いメジャーは集計されます。
LODの粗い・細かい
LODは多くの場合 使用しているディメンションが少ないと粗くなり多いと細かくなります。ディメンションを使用する度にどんどんデータが細かく集計されていっているイメージを持ってもらえればいいと思います。
FIXED関数とは?
FIXED関数とはビューのLODに関係なく 指定のLODでデータを集計することができる関数です。言い換えれば、「ビューのディメンションに関係なく 指定のディメンションでデータを集計する」ことができる関数です。
ビューのディメンションに関係なく 指定のディメンションでデータを集計できる
上述しているようにビューのLOD(集計レベル)はビューに使用している全てのディメンションで決まっており、それ以外の細かさや粗さで集計した値を利用することができません。そのような場合にFIXED関数を用いるとビューとは異なるディメンション(LOD)で集計した値を利用することができるようになります。
FIXED関数の書き方
FIXED関数は下記のように記載します。全体を { } で囲み、集計したいディメンションと集計式を入力します。カンマ(,) で区切ることで複数のディメンションを記載することも可能です。
- 例1:カテゴリ毎の合計売上を集計します。
- 例2:カテゴリ毎かつ顧客毎の合計利益を集計します。
データ全体で集計したい場合は、下記のようにディメンションを指定しなければOKです。
FIXED関数の仕組み・データ結合方法
FIXED関数を用いた場合、データソースから指定のディメンションを用いて別の集計テーブルを作り それをビューで使用するイメージになります(通常の場合、データソースの値をビューのディメンションによりそのまま集計・グラフ化しています)
具体的データでの例
Tableauのサンプルデータ「スーパーストア」に対してFIXED関数の計算式「 {FIXED[カテゴリ]:sum([売上])} 」を適用してみます。意味は[カテゴリ]毎の合計売上の集計です。
ビューにはディメンション[サブカテゴリ]とメジャー[売上]でテーブルを作っており、そこにFIXED関数の計算式により作られた集計テーブルを追加してみます。下図のようにFIXED関数によりカテゴリ毎の売上合計の集計テーブルが裏で作られて、それがビューに適用されます。
FIXED関数で集計された結果はビューの集計結果に左結合でくっつきます。「FIXED計算式のLOD」より「ビューのLOD」が細かいと値が複製されますので注意が必要です。
FIXED関数の適用タイミング
FIXED関数を使う上でフィルタがかかるタイミングを意識する必要があります。
FIXED関数が適用されるタイミングは下図になります。コンテキストフィルタは適用され、ディメンションフィルタは適用されないタイミングにFIXED関数は位置しています。
FIXED関数の使用例・用法
Tableauのサンプルデータ「スーパーストア」を使って色々なFIXED関数の使い方を紹介します。どのようにFIXED関数を使うか参考にしてみてください。
各地域での1都道府県あたりの平均売上(ビューより細かい粒度での集計)
各地域で1都道府県あたり平均どのくらい売上があるか計算します。
- 下記のFIXED関数で「都道府県別の合計売上」を計算する。
- ビューにおいて「都道府県毎の合計売上」を地域毎で平均する。
(ビューでディメンション[地域]をセットして、❶の計算フィールドの集計方法を「平均」にする)
{FIXED [都道府県]:SUM([売上])}
1都道府県あたりの平均売上の時系列推移(複数のディメンションでの集計)
1都道府県あたり平均売上の月毎の変動を確認します。
- 下記のFIXED関数で「月毎の都道府県別の合計売上」を計算する。
- ビューにおいて「都道府県毎の合計売上」を月毎で平均する。
(ビューでディメンション[(月)オーダー日]をセットして、❶の計算フィールドの集計方法を「平均」にする)
{FIXED [都道府県],DATETRUNC("month",[オーダー日]):SUM([売上])}
カテゴリの中のサブカテゴリの売上割合(割合の計算)
[カテゴリ]毎の合計売上に対する[サブカテゴリ]の割合を計算します。
- 下記のFIXED関数で分子を「ビューで集計した合計売上」、分母を「カテゴリ毎の合計売上」とした割合を計算する。
- ビューでディメンション[サブカテゴリ]とメジャー[売上]をセットして「サブカテゴリ毎の合計売上」を計算する。
- FIXED計算式をビューに追加する。「ビューで集計した合計売上」=「サブカテゴリ毎の合計売上」のためカテゴリ毎の合計売上に対するサブカテゴリの売上割合が算出できます。
SUM([売上])/SUM({FIXED[カテゴリ]:sum([売上])})
年毎・月毎・日毎の合計売上(期間指定してデータ集計)
年毎・月毎・日毎の売上合計を計算します。FIXED関数でオーダー日を用いてそれぞれの単位での合計売上を求めます。
{FIXED DATETRUNC("year",[オーダー日]):SUM([売上])}
{FIXED DATETRUNC("month",[オーダー日]):SUM([売上])}
{FIXED DATETRUNC("day",[オーダー日]):SUM([売上])}
一定以上の売上がある顧客をカウントする(条件を満たすデータをカウント)
売上が500,000以上の顧客数をカウントします。FIXED関数で[顧客 Id]毎の合計売上を求め、それが500,000以上かどうかIF構文で判定してカウントします。
COUNT(IF {FIXED[顧客 Id]:SUM([売上])}>500000 THEN 1 END)
顧客毎の初回購入日(一番古い日付を計算)
[顧客 Id]毎の初回購入日(オーダー日)を計算します。FIXED関数で顧客毎のオーダー日で一番小さい日を求め「顧客毎の初回購入日」を求めます。
{FIXED[顧客 Id]:MIN([オーダー日])}
顧客毎の購入回数(特定のフィールドのデータをカウント)
[顧客名]毎の購入回数を計算します。FIXED関数で顧客毎の[オーダーId]をCOUNTD関数でカウントして「顧客毎の購入回数」を求めます。
{FIXED [顧客 Id]:COUNTD([オーダー Id])}
Tableau(タブロー)の学習本についてはコチラの記事でまとめてますので参考にしてみてください。
初学者向け おすすめ学習書
コメント