
Tableau 8つのハードルを越える⑭「クエリパイプライン ( オーダーオブオペレーション ) その3 データソースフィルター」

クエリパイプライン解説。その3は「データソースフィルター」です。
(その2は下記になります。)
なお、今回の記事は、以前すでに書いた下記記事と全く同内容です。連載記事「Tableau 8つのハードルを越える」シリーズの一部として、ここにも掲載させて頂きます。
まず、「クエリパイプライン」について、振り返ってみます。
クエリパイプラインは、Tableauがデータをフィルターしたり、計算したりする順序になります。
下図が、Tableau Helpページに掲載されているイメージ図です。
この記事のテーマである、「データソースフィルター」は、このイメージ図の上から2番目に位置しています。

このデータソースフィルターは、データにライブ接続している場合には、一番先に働くフィルターになります。
また、データソースフィルターを設定したワークブック、全体にわたって働きます。つまり、ワークブック内の全てのワークシートに対して一様に働くフィルターとなります。
使いどころとしては、
「今、作っているワークブックでは元データの一部しか使わない。なので、データソースの段階でデータを絞ってしまえば、作業時の動きも軽くなるし余計なデータの事を気にする必要もなくなるな。」といった場面が考えられます。
(例: 元データには10年分のデータが入っているけど、利用するのは直近3年分だけ。
元データには日本全国のデータが入っているけど、このワークブックで利用するのは関東地方のみ。
など)
一方、データソースフィルターより後ろに位置する「コンテキストフィルター(Context Filter)」以降は、特別な設定をしない限り、各ワークシート個別に対して働くフィルターになります。
上記の事を、イメージ図にしてみると

このようになります。
では、Tableau Desktopで、どのようにデータソースフィルターを設定するか、見ていきましょう。
下図は、Tableau Desktopでサンプルスーパーストアデータに接続した画面です。

この画面の、一番右上、赤丸で囲った「フィルター 追加」をクリックします。
すると、下図のような画面が開きます。

さらに、「追加」をクリックすると

このように、フィルターを選択する画面が開きます。あとは、フィールドを選んで、所望のフィルター条件を設定します。
また、ワークシート作成中の画面からでも、下図のように左上のデータソースを右クリック→「データソースフィルターの編集」でも、設定を行う事が出来ます。

ここで補足ですが、データソースフィルターには、Tableau Desktop上で作成した行レベルの計算フィールド(1行1行の中で計算が完結する計算フィールド)も利用出来ます。
例えば、

このような、行レベル計算を作ったとします。
この後、データソースフィルターの編集を行うと、

このように、利用するフィールド候補の中に登場します。
「Tableauワークブック全体に働くフィルターを、そのTableauワークブックで作成した計算式で設定する。」
というのは、もしかしたらイメージしにくいかもしれませんが、便利な機能ですので覚えておいて損はないです。
(なお、Fixed利用のLOD計算式も利用可能です。)
一方、下記のような集計計算

は、データソースフィルター設定画面でも、利用するフィールド候補には登場しません。

以上が、データソースフィルターに関する基本的な解説です。
ここからは、データソースフィルターについて、他の似たフィルター設定とややこしい部分があるので紹介します。
今、下図のようにカテゴリ、サブカテゴリ毎の売上を見るVizで、地域を「関東」のみに絞ってみました。

これ以外のワークシートも作るけど、全て「関東」のみのデータで良い。と思った場合、次の方法があります。
下図のようにフィルターシェルフに置かれている「地域」を右クリック(もしくは▼マークをクリック)
→「適用先ワークシート」→「このデータソースを使用するすべてアイテム」を選びます。

これをすると、フィルターシェルフの「地域」の左側に円筒形のアイコンが表示され(上図)、このデータソースを利用する全てのワークシートに当該フィルターが適用されることになります。
(なお、上図の中の「関連するデータソースを使用するすべて」は、このデータソースをプライマリデータソースとして使用しているすべてのワークシートにフィルターを適用させる選択肢です。複数のデータソースを利用している場合に関係しますが、ここでは気にしないで下さい。)
「このフィルターの設定でも、データソースフィルターと働きは全く同じ?」
と思うところですが、実はちょっと違います。
このフィルター設定は、ワークブックの全てのワークシートに適用される点は「データソースフィルター」と同じですが、フィルターの種類としては「ディメンションフィルター」のままとなっています。
下記、クエリパイプライン図の、赤丸のところです。

データソースフィルターと、ディメンションフィルターの間に、なにやら
「Sets、conditional filters、top N、Fixed LOD」といろいろ書かれていますね。
データソースフィルターは、これらの前に働きますが、
「適用先ワークシート」→「このデータソースを使用するすべてアイテム」の設定をしたディメンションフィルターは、あくまでディメンションフィルターなので、これらの後で働きます。
では、この地域を関東に絞るフィルターをデータソースフィルターにする場合は、どうするか?
既にご紹介したように、データソースを右クリックして「データソースフィルターの編集」をクリックしてみましょう。

すると、
どうでしょう・・・

このように、既にデータソースフィルター編集画面にも表示されています。
これで、「なんだ、データソースフィルターにも、設定されているのか・・」と思いたいところですが、実は違います。
今、この編集画面に表示されている「地域 関東地方を保持します」は、
「設定済みのデータソースフィルター」ではなく、「これをデータソースフィルターにしましょうか?」という候補なのです。
なので、この編集画面で「あ、すでにデータソースフィルターになっているみたいだからいいね。」とキャンセルを押してしまうと、候補のままで終わりデータソースフィルターに変化しないままとなります。
(この事は、Tableau Helpページ
https://help.tableau.com/current/pro/desktop/ja-jp/filtering_datasource.htm
でも解説されています。)
試しに、「キャンセル」を押すと、

引き続きフィルターシェルフには、「地域」のフィルターが残っています。
この状態では、まだ、データソースフィルターになっていません。
一方、正しい方法は、先ほどの下図、編集画面で

フィルターの内容を確認して「OK」をクリックします。
こうすることで、初めてデータソースフィルターになります。
すると、

自動的に、フィルターシェルフの部分から「地域」のフィルターが、消去されます。
でも、もう一度、データソース編集画面を開いてみると、

ちゃんとデータソースフィルター編集画面には表示されるという状態になります。
これが、本来のデータソースフィルターの状態です。
この挙動は、大変紛らわしもので、色々操作しているうちに訳判らなくなってしまいがちです。
稀ですが具体的な例としては、
既にデータソースフィルターに設定しているのに、さらに通常のディメンションフィルターとしても設定してしまい→「適用先ワークシート」→「このデータソースを使用するすべてアイテム」とした場合、があります。
この場合、

このように、フィルターシェルフに地域フィルターが表示された状態ですが、データソースフィルターとしても設定されているという二重状態になります。
参考までに、データソースフィルターにしたいのに、このようにどうも良く分からなくなってしまった場合の対応手順を整理しておきます。
① データソースを右クリックし、データソースフィルターの編集を行う。
② 所望のフィルター条件が設定されている事を確認したのちに、確実に「OK」をクリック。
③ これで、フィルターシェルフから、当該フィールドのフィルターが消えればそれで一件落着。
④ まだフィルターシェルフに、当該フィールドのフィルターが残っている場合は、このフィルターを取り除いてしまって良いのですが・・・
不安な方は、フィルターシェルフのフィルターの編集を行ってみましょう。
その際、下図のように、「データベース内のすべての値」を表示する設定にして下さい。

②で正しくデータソースフィルターが設定されていれば、そもそも他の選択肢(上図の場合は関東以外の地域))が、リストに表示されません。これで、「間違いなくデータソースフィルターになっているな」と確信を持てます。
これで、もやもや状態を解消できると思います。
*補足:もしディメンションフィルターとしての機能(= LOD Fixed計算、Set、Conditional Filter、Top N Filterの後に作動するフィルター)で、全てのワークシートに働かせたい場合は、データソースフィルターには設定しないで下さい。
以上、長くなりましたが、データソースフィルターについて解説いたしました。
ご精読ありがとうございます。
次回、その4は「コンテキストフィルター」になります。
*連載記事すべてへのリンクは、こちらのマガジンにまとめています。
By ritz_Tableau
2020-2023 Tableau Zen Master | 2019-2021,2023 Tableau Public Ambassador |2021 certified as Tableau Certified Professional | DATA Saber
X(Twitter) : @ritz_Tableau
Tableau Public : https://public.tableau.com/profile/satoshi.ganeko#!/
*記事の中に不正確な点などありましたら、是非、X(Twitter) Direct Messageでお知らせ下さい。よろしくお願いします。m(__)m

おことわり
当記事のコンテンツについて、商用利用でない場合は許可なく転載して頂いて構いません。(ハードル画像および他のサイトから引用している画像は除く)
転載の際は、当記事へのリンクを掲載し転載であることを明記してください。商用利用の場合は許可なく転載しないで下さい。
当記事のコンテンツについて、可能な限り正確な情報を掲載するよう努めていますが、誤情報が含まれたり、情報が古くなっている可能性があります。当記事に掲載された内容、および、当記事からリンクやバナーによって移動したサイトに掲載された内容によって生じた、損害等の一切の責任を負いかねますのでご了承ください。よろしくお願いします。