2026.09.14

Tableau Desktopでのフィルター実行順序

Tableauでダッシュボードを作成中、「フィルターをかけたのに期待した結果にならない」という経験はないでしょうか。
今回は、その原因の一つであるTableauのフィルター実行順序について解説します。

■概要

Tableauでは、ビューの表示時に各種フィルターや計算処理が「クエリパイプライン」という決められた順序で実行されます。
フィルターごとに優先順位があり、この順番を理解することが正しい分析結果を得るための重要なポイントです。
フィルターの実行順序は以下の通りです。

【フィルターの種類】
▼データソース画面
・抽出フィルター:データ抽出を作成する際に、抽出対象のデータを絞り込むためのフィルターです。
 データソース画面の抽出設定で指定します。
・データソースフィルター:ワークシートに読み込む前にデータを絞り込むためのフィルター。

▼ワークシート画面
・コンテキストフィルター:ワークシート上で操作対象となるデータだけに絞り込むためのフィルター。
 ワークシート内で設定するフィルターの中で一番最初に実行されます。
・ディメンションフィルター:地域・カテゴリなどのディメンションに対するフィルター。
・メジャーフィルター:売上・利益などのメジャーに対するフィルター。
・表計算フィルター:RANKなどの表計算で得られる値に対するフィルター。

■実演

これらのフィルター順序がビューの表示結果にどのような影響を与えるのか、例を2つご紹介します。

【①東京都の売上TOP10の顧客を表示する】
以下は、全国の顧客一覧を売上の降順で表示したものです。

このリストを「東京都の売上TOP10」に絞るため、フィルターシェルフに以下のフィルターを追加します。
・都道府県 = 東京都
・顧客名:売上合計のTOP10

TOP10を指定したのに5名しか表示されていません。
これは、「全国の売上TOP10の中の東京都の顧客」に絞られているからです。

「都道府県フィルター」と「Top Nフィルター」はどちらもディメンションフィルターのため、
Tableauでは同じ実行順序で処理されます。この仕様により、
 東京都に絞る
  ↓
 東京都の中でTop10を算出する
という順番でフィルターがかからず、想定外の結果になってしまいました。

想定通りの結果を得るためには、都道府県フィルターをコンテキストフィルターに変更します。
これにより、
 東京都に絞る(コンテキストフィルター)
  ↓
 東京都の中でTop10を算出する(ディメンションフィルター)
という順番でフィルターがかかり、東京都の売上TOP10を表示することができます。

【②フィルターに影響されない全体比率を表示する】
以下は、簡易表計算の「合計に対する割合」を使用して、売上全体に対するサブカテゴリごとの割合を表示したものです。

このリストにカテゴリフィルターを追加すると、以下の表示になります。

カテゴリ=テクノロジーのみの合計値で割合が再計算され、フィルターをかける前と割合が変わってしまいました。
これは、
 ディメンションフィルター
  ↓
 簡易表計算
の順番で処理が実行されるためです。

フィルターに影響を受けないようにするためには、簡易表計算ではなくFIXED LODを使用します。
FIXED LODはディメンションフィルターより前に計算されるため、
 FIXED LODで分母となる全体売上を算出
  ↓
 ディメンションフィルターを適用
  ↓
 表示対象の売上を、あらかじめ算出した全体売上で割る
の順番で処理が実行されます。
これにより、通常のディメンションフィルターを適用しても、フィルター適用前の全体売上を分母とした割合を維持できます。

マークカードのテキストに置いている[売上]を、以下の計算フィールドに変更し、カテゴリでフィルターをかけます。

フィルターをかけた後も、フィルターをかける前と同じ割合を維持することができました。
例②のように全体に対する割合を求めたい場合は、フィルターの要件に応じてFIXED LODの利用を検討すると良いでしょう。

このように、Tableauではクエリパイプラインによって分析結果が大きく変わります。
Tableauでダッシュボードを作成する際は、クエリパイプラインの仕組みを理解し、各種フィルターや計算式を活用することが重要です。

RECRUIT

エンジニアが主役となり、未来を明るく照らしていく100年企業へ。

採用情報へ