フィルター処理の順序 — なぜLODとフィルターが干渉するのか
導入
LOD計算を使ったのに、フィルターで絞り込んだらなぜか値がおかしくなった——そんな経験はないでしょうか。Tableauにはフィルターが適用される順番が厳密に決まっており、この順序を知ることが正確な分析の出発点になります。
なぜ重要か
フィルターが適用される順序は、データソースフィルター→コンテキストフィルター→FIXED LOD→ディメンションフィルター→INCLUDE/EXCLUDE LOD→テーブル計算フィルターの6段階です。この順序を体系的に把握していることが、DA試験の応用問題で正解に直結します。
フィルター処理順序はDA試験における「データの探索と分析」ドメインの中でも応用的な出題が集中するトピックです。「なぜ期待通りの結果にならないか」という原因特定の問題が出題されるため、LOD計算とフィルターの挙動を個別に理解するだけでなく、両者の相互作用を把握しておく必要があります。
実務でも「フィルターで絞り込んだのにLOD計算の値が変わらない」という問題が頻繁に発生します。原因のほとんどがFIXEDとディメンションフィルターの処理順序の理解不足で、コンテキストフィルターへの昇格という解決策を知っているかどうかが分析の正確性を左右します。
くわしく知ろう
Tableauのフィルター処理は、6段階の順序で適用されます。最初に処理されるのが「データソースフィルター」で、データベースから取り込む行そのものを制限します。次いで「コンテキストフィルター」が働き、後続のすべてのフィルターが参照する独立した集計基準を確立します。
3番目に「固定LODフィルター(FIXED)」が評価されます。FIXEDはビューのディメンションに依存しないため、コンテキストフィルターの影響は受けますが、通常のディメンションフィルターには左右されません。4番目が「通常のディメンションフィルター(標準フィルター)」です。このフィルターはビューに配置されたフィールドを基準に絞り込みを行います。
続いて5番目に「INCLUDE/EXCLUDEのLODフィルター」が処理されます。INCLUDEとEXCLUDEはビューのディメンションを参照するため、4番目までのフィルターの結果を受けた後に評価されます。最後の6番目が「テーブル計算フィルター」で、集計が終わってから結果を絞り込む仕組みになっています。
この順序が特に重要になるのはFIXEDとディメンションフィルターの関係です。FIXEDはディメンションフィルターより前に評価されるため、ディメンションフィルターで特定の地域を除外しても、FIXEDによる値はその除外を反映しないことがあります。コンテキストフィルターを使うとFIXEDをそのコンテキスト内に閉じ込められるため、意図通りの計算が実現します。
具体例で理解する
たとえば「各顧客の全期間売上」をFIXEDで計算しているとき、ディメンションフィルターで「2023年のみ」と絞り込んでも、FIXEDの値は全期間を参照したままになります。コンテキストフィルターに昇格させると、FIXEDも2023年の範囲内で計算し直すことができます。
試験での出題パターン
【パターン1:フィルター処理順序の並び替え問題】
「Tableauのフィルター処理順序として正しいものはどれか」という形式で、順序の正確な並びを4択から選ぶ問題が出ます。選択肢では「コンテキストフィルターとFIXEDの順序を入れ替えた誤答」や「ディメンションフィルターをFIXEDより前に置いた誤答」が定番です。「データソース → コンテキスト → FIXED → ディメンション → INCLUDE/EXCLUDE → テーブル計算」という6段階を語呂やストーリーとして記憶しておくことが大切です。
【パターン2:FIXEDがフィルターで変わらない原因と対処を問う問題】
「FIXEDで計算した値がディメンションフィルターで変わらない原因と、正しい対処法の組み合わせとして適切なものはどれか」という応用問題が出ます。「原因=FIXEDはディメンションフィルターより前に評価される」「対処=コンテキストフィルターに昇格させる」という組み合わせが正解の核心です。「テーブル計算フィルターに変える」「INCLUDE式に書き換える」といった誤答選択肢との区別が求められます。
よくある間違い・紛らわしいポイント
【コンテキストフィルターとデータソースフィルターの混同】
どちらもFIXEDより前に処理されますが、目的が異なります。データソースフィルターはデータベースから取り込む行そのものを物理的に絞り込みます。コンテキストフィルターはビュー内での計算に使われる集計基準を確立し、後続のFIXED計算がそのコンテキスト内で再評価されるようにします。「FIXEDの計算範囲をフィルターで制御したい」場合はコンテキストフィルターが適切です。
【ディメンションフィルターでFIXEDを制御しようとする誤り】
FIXEDはディメンションフィルターより前に評価されるため、ディメンションフィルターでいくら絞り込んでもFIXEDの計算結果には影響しません。「フィルターを設定したのに全期間の値が表示される」という現象の原因がこの順序の差です。解決策はディメンションフィルターをコンテキストフィルターに昇格させることです。
【テーブル計算フィルターの特性の誤解】
テーブル計算フィルターは処理順序の最後に位置するため、他の集計結果や表計算の値には影響しません。「他の計算結果を変えずに表示する行だけを絞り込みたい」場面に適しており、LOD計算やディメンションフィルターより後に働く点で他のフィルターとは性格が異なります。
まとめ・試験ポイント
- フィルター処理の順序=データソース → コンテキスト → FIXED → ディメンション → INCLUDE/EXCLUDE → テーブル計算
- FIXEDはディメンションフィルターより前に評価される
- FIXEDをディメンションフィルターで制御したい場合はコンテキストフィルターを使う
- テーブル計算フィルターは集計後に働くため、他の集計結果に影響しない
- 試験では「このフィルター操作でLODの値がなぜ変わらないか」という理由を問う問題が出る
学習した内容を模擬試験で確認しよう。Tableau Data Analyst模擬試験で実力を測ろう。
Tableau DA模擬試験に挑戦