メジャーフィルターの複数シート適用に潜む罠[DATA Saber挑戦 #Week12]
DATA Saber BridgeプロジェクトにApprenticeとして参加しています。
週一note更新目指します。
はじめに
Tableauのフィルターは1種類ではなく、データソースフィルターやディメンションフィルターなど何種類も存在します。
その中でもメジャーフィルターは「データを集計した上で絞り込む」ため、ディメンションフィルターとは違った挙動をする部分があります。
そもそもメジャーフィルターとは
その名の通り、メジャーに対してかけることができるフィルターです。
ディメンションによるフィルターがされた後にメジャーフィルターの計算処理は行われます。
フィルターなどの計算処理の順番については、クエリパイプラインと呼ばれいます。クエリパイプラインについては他の方もいろいろと解説記事も出されているため、この記事での詳しい説明は省きます。
メジャーフィルターを複数シートに適用させる場合は要注意
ワークシートごとに設定できるフィルター機能ですが、他のシートにも適用範囲を広げることができます。ディメンションはもちろんメジャーも適用先ワークシートを設定できるのですが、特にメジャーフィルターの適用先ワークシートを拡大する場合は集計範囲に気を付ける必要があります。
具体例
例を挙げて説明します。
ここでは、カテゴリ別売上金額の合計値をスライダー形式でフィルタリングしたいと思います。
上記のような設定をすればよいかと思いますが、このままでは想定とは異なる挙動をしてしまいます。
以下のように、売上金額の最大値を変えても〈ワークシート1〉カテゴリ別売上割合のカテゴリのみ表示項目が変化し、逆に売上金額の最小値を変えると〈ワークシート2〉サブカテゴリ別売上の一部サブカテゴリのみ表示項目が変化しています。
なぜこのような処理となってしまっているのでしょうか?
Viz LODとメジャーフィルターの関係性
この事象から、メジャーフィルターとViz LODの関係性について説明します。
Viz LODとは、Tableauのワークシート内でデータが集計される単位(粒度)のことを指します。
(参考)Viz LODとは
フィルターが他ワークシートに適用されない場合は特にViz LODを意識しなくてもグラフが作れますが、メジャーフィルターを他ワークシートにも適用させる場合は話が変わってきます。
例えば、スライダー形式の売上フィルターを¥1,279K~¥70,000Kに設定した場合、〈ワークシート1〉でも〈ワークシート2〉でも売上¥1,279K~¥70,000Kのデータに絞られているのですが、
〈ワークシート1〉ではカテゴリ別売上の合計が¥1,279K~¥70,000Kのカテゴリ
〈ワークシート2〉ではサブカテゴリ別売上の合計が¥1,279K~¥70,000Kのサブカテゴリ
のデータにフィルターされています。
その結果、
〈ワークシート1〉ではカテゴリ別売上の合計が¥70,000Kを超えていたカテゴリ「家電」「家具」が除外
〈ワークシート2〉ではサブカテゴリ別売上の合計が¥70,000Kを超えていたサブカテゴリが無かったため、除外対象のデータなし
という処理がなされた訳です。
Viz LODが異なるシートでも同じ集計値でフィルターするには
上記の例の場合、どのようにすれば想定通りの実装ができるでしょうか?
答えはLOD式の利用です。
LOD式とは、集計するデータの粒度を自在にコントロールできる関数(FIXED関数、INCLUDE関数、EXCLUDE関数)を利用した計算式のことを指します。
今回はEXCLUDE関数を使って「カテゴリ別売上」の計算フィールドを作成し、作成した計算フィールドをフィルターに設定します。
EXCLUDE関数を使ったメジャーフィルターを作成することで、2つのワークシートに掛かるメジャーフィルターのLOD(集計計算の粒度)を揃えることができます。
その結果、
〈ワークシート1〉ではカテゴリ別売上の合計が¥70,000Kを超えていたカテゴリ「家電」「家具」が除外
〈ワークシート2〉でもカテゴリ別売上の合計が¥70,000Kを超えていたカテゴリ「家電」「家具」が除外
という処理が行われるようになります。
(余談)なぜFIXED関数を使わないのか
上記の解決策ではLOD関数の中でもEXCLUDE関数を使用しました。
LOD計算ではFIXED関数をよく使うと思いますが、FIXED関数とINCLUDE関数/EXCLUDE関数はクエリパイプライン(計算の順序)が異なります。
サンプルダッシュボードのように「地域」でもフィルターをする場合には、FIXED関数の計算フィールド使用とEXCLUDE関数の計算フィールド使用とでフィルター結果が変わります。
EXCLUDE関数を使った場合は『地域でデータを絞ってからカテゴリ別売上の計算』という順序ですが、FIXED関数を使う場合は『カテゴリ別で売上を計算してから地域でデータと絞る』という順序になります。
FIXED関数を使った計算フィールドを使用するのであれば、「地域」をコンテキストに追加することで、計算の順序を入れ替えることができます。
おわりに
複数ワークシートにまたがったメジャーフィルターの挙動から、Viz LODについても解説しました。
Viz LODを意識していないと意外なところに落とし穴があるため、今後はよりViz LODを意識してTableauを使っていきたいですね。
この記事が気に入ったらサポートをしてみませんか?