Tableauのコンテキストフィルターを使ってみた

はじめに

TechDiv SEチーム 大橋です。
今回はTableau機能の中のコンテキストフィルターについてご紹介します。

環境

Tableau Desktop 2019.1
Windows10

コンテキストフィルターとは

通常のフィルターは、他のフィルターに関わらずデータソース内のすべての行にアクセスします。これに対してコンテキストフィルターは独立したフィルターです。これをかけることで他のフィルターはコンテキストフィルターを通過するデータのみを処理することになります。
引用 : コンテキスト フィルターでビューのパフォーマンスを改善する - Tableau

具体例

例えば、47都道府県の売上データを用いて、関東1都6県内での売上高比率(%)を出したい場合などにこの手法を用いることができます。

・【データ】サンプル-スーパーストア(Tableau初期サンプル)
・【求めるもの】関東1都6県を100%とした時の、関東1都6県各県の売上高比率(%)

まず都道府県別の売上額を表示させ、ディメンション[地域]に対して“関東地方”でフィルターをかけます。
これをディメンションフィルターと呼びます。

次に、売上高比率についての計算式を作成します。

表計算式

SUM ( [売上] ) / ATTR ( { FIXED : SUM ( [売上] ) } )

FIXED関数

FIXED関数とは、集計を行う関数です。FIXED 計算はディメンション フィルターの前に適用されるので、[フィルター] シェルフ上のフィールドをコンテキストフィルターに追加しない限り、フィールドは無視されます。
参照 : フィルターと詳細レベルの式 - Tableau

つまり FIXED : SUM ( [売上] ) の部分において、現状ではデータソース全体の売上の集計値ということになります。

ATTR関数

ATTR 関数は、参照元日付ではなくビューをフィルターします。また、特にデータ ブレンドに基づくビューを使用する場合など、特定の状況において重要なツールになります。
参照:属性 (ATTR) 関数を使用するタイミング - Tableau

作成した売上高比率を表示させると、総計のパーセンテージが[21.36%]となっており、これはデータソース全体分の関東圏の売上高比率であることが伺えます。期待値としてはこの数値を100%として関東1都6県各県の割合を表示させることです。

ここで、フィルター内の[地域]を右クリックし、[コンテキストに追加]を選択します。

するとフィルター内の[地域]はブルーからグレーへ変化し、総計の売上高比率も100%に変更されました。各都道府県の売上比率も、関東地方を100%とした割合に変化しています。

前述でFIXED関数は[フィルター] シェルフ上のフィールドを コンテキスト フィルターに追加しない限り、とあります。今回コンテキストフィルターを利用したことで、FIXED関数が参照するフィールドがソース全体ではなく"関東地方"に限定されました。

このようにコンテキストフィルターを利用することで、データソース内のある限られたデータに関してのみ、フィルターをかけることが可能になります。

2段階でフィルターをかける際には、ぜひコンテキストフィルターを使用してみてはいかがでしょうか。