
Tableau 8つのハードルを越える⑫「クエリパイプライン ( オーダーオブオペレーション ) その1」

こんにちは。Tableau 8つのハードルを越える⑫となります。
なお、この連載記事につきましては、下記をご参照下さい。
今回から、数回にわたり5個目のハードル「クエリパイプライン」もしくは「Order of operation」と呼ばれるものについて、解説したいと思います。
この、 「クエリパイプライン」もしくは「Order of operation」(以後、「クエリパイプライン」と表記します。)は、Tableauの機能を様々活用し始めてくると、とても重要になってくる概念です。
参考資料としてはTableau社ヘルプページ
Qiita社HP (少し難しめの内容)
おなじくQiita社HP (少し難しめの内容)
があります。
「クエリパイプライン」は、Tableauが様々な計算やフィルターを実行していく順序、の事になります。
「計算やフィルターって、順序とかあるの?」と思われる方もいらっしゃると思います。
基本的にTableauは、
「設定された粒度でデータを切り分けて、集計計算」
という事を行います。
例えば、下図の例では
データをサブカテゴリ毎に切り分け、売上を「集計計算」する、という事が行われています。

ここで、何かフィルターを加える場合を考えてみましょう。
例えば「オーダー日が2021年のみ」と「事務用品のみ」
というフィルターを加える場合、フィルター部分にディメンション「オーダー日」、「カテゴリ」を置いて

このようにします。
この時、当然ながら
①「オーダー日が2021年だけ」「事務用品だけ」の条件でデータをフィルターする。
↓
②データをサブカテゴリ毎に切り分け、売上合計を「集計計算」する。
という流れを、Tableauが行っています。
結果、下記のVizになっています。

ここでさらに、売上合計が小さいサブカテゴリを無視し、売上合計が50万以上のサブカテゴリだけ表示するとしましょう。
そのためには、メジャーの「売上」をフィルターに持っていき

「合計」を選び、

最小値を500,000とするフィルターを設定します。

結果、次のようになります。サブカテゴリ「クリップ」が消えました。

この時、どのような流れでTableauが処理を行っているか考えると・・これまた当然ではありますが、
①「オーダー日が2021年だけ」「事務用品だけ」の条件でデータをフィルターする。
↓
②データをサブカテゴリ毎に切り分け、売上合計を「集計計算」する
↓
③「売上合計の集計結果が500,000 以上」の条件でフィルターする
という流れが、行われています。
フィルターと一言でいっても、①と③の2段階で行われています。
Tableauを使い始めてしばらくは、このような事は特に気にする必要はありません。自由にデータにフィルターをかけ、見たい情報を探索して大丈夫です。
しかしながら、徐々にTableauの機能を使いこなしてきて
・セット
・上位何位や下位何位といった条件でのフィルター (Top Nフィルター)
・売上○○万以上、など条件を指定したフィルター (コンディショナルフィルター)
・LOD計算(FIXED、INCLUDE、EXCLUDE)
・表計算の結果を利用したフィルター (ランク何位以上のみ表示など)
といった機能を利用するようになると、正しく「クエリパイプライン」を理解していないと、意図通りの計算やフィルターを行っていないVizになってしまう可能性があります。
この、クエリパイプラインについて順に説明を進めていきたいと思います。
今回は、最後に下図を紹介して終わりたいと思います。

こちらは、冒頭紹介したTableau社ヘルプページに記載されている図に、少し補足を加えたものです。
これが、Tableauが計算やフィルターを行う順番となっています。
ご精読ありがとうございます。
続いて「その2」は下記になります。
*連載記事すべてへのリンクは、こちらのマガジンにまとめています。
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

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