見出し画像

たぶろう初心者の私がつまずいた点②クエリパイプライン

こんにちは、ゆみまろです💁‍♀️
DATASaber挑戦中のTableau初心者の私が復習がてらに、苦手意識があったTabelauの使える機能についてnoteに書いていきたいと思います。
今回はクエリパイプラインについてまとめていきます。

クエリパイプラインとは

Tableauがさまざまなアクション操作(フィルターや計算など)を実行する順序です。大まかに考えるとフィルターのかかる順番です。
公式では以下のように記載されています。

Tableauの操作の順序は、クエリパイプラインとも呼ばれ、Tableauがさまざまなアクションを実行する順序です。(アクションは操作とも呼ばれます。)
多くの操作でフィルターが適用されます。つまり、ビューを構築してフィルターを追加すると、操作の順序で確立された順序で常にフィルターが実行されます。
ユーザーが予測していたフィルターの実行順序と、操作の順序が指示する順序が異なる場合、予期しない結果になる可能性があります。
Tableauの操作の順序には、次の図のすべての要素が含まれます。フィルターは青、他の操作(ほとんどは計算)は黒で示されます。

https://help.tableau.com/current/pro/desktop/ja-jp/order_of_operations.htm
クエリパイプライン図

適用順としては上の図のようになります。

でも、この説明を聞いてもわからないですよね。
私はわかりませんでした💦
フィルターがかかる順番というのはどういうことだろうとかんがえるときに、この図を見て理解するのではなく、1つ1つの比較をしていくのがおすすめです。

皆さんがよく使うのはディメンションフィルターだと思います。
ディメンションフィルターは項目で絞り込むフィルターなので、地方でいうと全国>関東地方などに絞るなどが挙げられます。
地方で絞った後に累計の売上トップ3の都道府県で絞り込みましょう。
このとき、簡易表計算を用いて「累計」を出して、その累計を出したメジャーをフィルターに持っていきましょう。
すると表計算フィルターがかかります。
そうすることで、まず関東地方で絞り込み、累計トップ3で絞り込めるようになります。
このように同時にフィルターをかけたときにフィルターの種類によって、適用順が変わってくるのです👀

クエリパイプラインとパフォーマンスの関係

Tableauのパフォーマンスを考えると簡単にクエリパイプラインを解釈できるようになります。Tableauのパフォーマンスとは、ダッシュボードが重いかどうかの処理スピードの部分のことです。

パフォーマンスの話はそこまでしっかりしませんが、表示する内容が多いほどダッシュボードが重くなりますし、整数型よりも文字列型のほうが表示に時間がかかります。

そのパフォーマンスに関係する話で、Tableau内で完結する動作とTableauから指示を出してデータベースで行う操作(DB側での処理)があります。

Tableau内で完結する操作

  • マーク

  • 表計算

  • ソート(並び替え)

DB側での処理

  • 結合

  • 集計

  • 計算

このようにTableau内で処理するのか、DBが処理するのかでパフォーマンスが悪いときに対処方法が変わってきます。

そして、クエリパイプラインの話に戻りましょう。
実は、この処理の場所の違いがクエリパイプラインに影響しています。

クエリパイプラインの図の上のフィルターはDB側での処理、それ以外のフィルターはTableau内での処理になります。
データベースを抽出する際に絞り込む抽出フィルター、これはDB側から取り込むときの処理です。
そして、次のデータソースフィルターはデータをシートに読み込む前のフィルターになります。
先に抽出フィルターが動かないと処理の順番としても合わないですよね。
また、最後の方の表計算フィルターなども、抽出フィルターやデータソースフィルターが動く前に動くのは処理の順番としておかしいですよね。
クエリパイプラインを考えるときはただ覚えるだけではなく、Tableau内でどんな順番で処理が起こっているのか考えると簡単に考えることができます。

どんな時にクエリパイプラインを考えるのか

クエリパイプラインをどのようなときに意識するかについてお話ししたいと思います。

1.フィルターの挙動が思った通りに行かないとき
売上トップのカテゴリの製品のうち、売上上位10位の製品を絞り込みたいときがあるとします。
このとき、普通に売上トップのカテゴリでフィルターをかけて、売上上位10位の製品でフィルターをかけてしまうと、売上トップのカテゴリかつ全体の中で売上10位の製品のものがでてきてしまいます。

正しくない挙動

このとき、ディメンションフィルター2つになるので同時に適用されてしまいます。カテゴリでの絞り込みを先にしたいので、カテゴリのフィルターを右クリックしてコンテキストフィルターに変えましょう。
すると以下のように正しい挙動になります。

正しい挙動

2.データが重いとき
データが重いときに抽出フィルターを検討してみてください。
予め不要なデータがある場合は、不要なカラムをすべて除外したり、行数を指定したりするなど抽出フィルターを用いて、データを軽くすることができます。この時はクエリパイプラインの適用順位として一番最初にくることを忘れないようにしてください。

抽出フィルター

クエリパイプラインの理解は深まったでしょうか。
みなさんも是非使ってみてください💁‍♀️

記事をご覧いただきありがとうございました。
これからも勉強したことをみなさんにわかりやすく発信していきたいと思います💪

この記事が気に入ったらサポートをしてみませんか?