![見出し画像](https://assets.st-note.com/production/uploads/images/89128216/rectangle_large_type_2_6379835e1ecbe7c05aff6c4d3611ea9a.png?width=800)
Tableau Tips: クエリパイプラインとの遭遇
Tableauでフィルタを使いこなすために必ず念頭に置いて考慮しなくてはならない要素に「クエリパイプライン」があります。
https://help.tableau.com/current/pro/desktop/ja-jp/order_of_operations.htm
![](https://assets.st-note.com/img/1665925570249-Eq7QxOMnSG.png?width=800)
Vizを作成時にもっともよく使い,また使いやすいのは「ディメンションフィルタ」かと思います。また,「抽出」でのフィルターや「データソース」フィルターなどは明示的に設定も可能ですし,どの段階で適用されるかもわかりやすいものです。
しかし,「クエリパイプライン」というものをトレーニングで習っても謎なままだったのが「コンテキストフィルター」でした。
ディメンションフィルターとの違いがわからず,またそもそもどこで設定するかもよくわかりませんでした。
この「コンテキストフィルター」はこんな時に使いました,という例を紹介したいと思います。
TopNがコンテキストフィルターの出番
ディメンションフィルターだけでは思うような結果が得られなかったのは,「TopN」を表示させたいときでした。
みんな大好き「サンプル-スーパーストア」のデータを使い,カテゴリごとの売上高Top20のオーダーIDを表示させたいとします。
まずはじめに下記のようにオーダーIDごとの売上高合計のTop20を表示させます。
![](https://assets.st-note.com/img/1665924065745-2JGwaXg8Gj.png?width=800)
ここにフィルターとして「カテゴリ」を追加します。
![](https://assets.st-note.com/img/1665924183739-QrrsASkyB5.png?width=800)
カテゴリのフィルターにおいて「家具」を選択すると,Top20を表示しているはずなのに,18個しかオーダーIDが表示されていません。
![](https://assets.st-note.com/img/1665924411431-46qIRdZYJv.png?width=800)
20個表示されるはずが,なぜ18個しか表示されないのか。ここにクエリパイプラインが効いてきます。
クエリパイプラインを確認すると「TopN」はディメンションフィルターの前に適用される順番になっています。
つまりこの場合,すべてのオーダーIDから売上高合計Top20を抽出したうち,カテゴリ「家具」のものを抽出しています。Top20の中に家具の売上高がなかったオーダーIDが2つあった,ということになります。
本来やりたかったのはどのカテゴリを選んでも,そのカテゴリごとに売上高のTop20を表示することです。
そのためには,カテゴリでフィルターを掛けた結果にTopNを適用する必要があります。つまりTopNより前にフィルターを掛けなくてはなりません。そこで使うのが「コンテキストフィルター」です。
コンテキストフィルターの設定
コンテキストフィルターは,フィルターカードにある項目のオプションメニューから「コンテキストに追加」を選択することで設定できます。
![](https://assets.st-note.com/img/1665925027158-saa5RXESqY.png?width=800)
すると,フィルターカードにある項目がグレーに変わります。これでコンテキストフィルターが適用されています。
![](https://assets.st-note.com/img/1665925118292-pVwcryLk7j.png?width=800)
フィルターの適用の順番が変わったことで,18個しか表示されていなかった家具の売上高合計Top20が,当初の想定通り20個表示されるようになりました。
時系列で多数のデータがあり,でも表示したいのは特定のディメンションのなかの直近のN点で,といったケースのときに遭遇し,そこで初めてコンテキストフィルターを適用しました。
TopNを使いたいときには必要になるのではないかと思います。
でわ。
この記事が気に入ったらサポートをしてみませんか?