![見出し画像](https://assets.st-note.com/production/uploads/images/128360502/rectangle_large_type_2_180b79fec4dacfd86d3a491ce6eae170.png?width=1200)
Tableauを操作しながらクエリパイプラインを復習してみる①
Tableauを学ぶなかでなんとなく理解が曖昧になっていた「クエリパイプライン」についてまとめていきたいと思います。
今回は実際に手を動かしながら理解を深めていきました。
1.クエリパイプラインとは
クエリパイプラインとは「Tableauが様々なアクション(操作)を実行する順序」です。
※詳細はTableau公式のページに説明があります:Tableauの操作の順序
Tableauでは様々なフィルターを使用することがありますが、それぞれのフィルターがどのような処理結果に対して適用されるのかを理解するにはこのクエリパイプラインを理解しておく必要があります。
以下は公式サイトに載っているクエリパイプラインの図に、理解しやすいよう自身で注釈を加えてた図になります。
![](https://assets.st-note.com/img/1705828437704-oiIXncHiNs.png?width=1200)
大きく以下のようにフィルターが適用される先が分かれます
① 抽出フィルターとデータソースフィルター
→データソースに対するフィルター
(=ワークブック全体にかかるフィルター)
➁ コンテキストフィルター以降のフィルター
→ワークシート内で作用するフィルター
これらのクエリパイプラインに出てくるフィルターについて、それぞれTableauを操作しながらクエリパイプラインを理解していきたいと思います。
まずは①について見ていきます。
2.抽出フィルター
1)ライブ接続と抽出
Tableauのデータ取得方法には、以下2種類があります。
ライブ接続: データソースにリアルタイムに接続してデータを取得
抽出: データをファイル(.hyper)抽出してワークブックに保存して利用
![](https://assets.st-note.com/img/1705830198699-pZ5UzjTZ9K.png?width=1200)
抽出フィルターはこのうち「抽出」を選択し、抽出ファイルを作成する際に利用するフィルターです。
2)抽出フィルターを使ってみる
まず、「抽出」を選択したうえでそのとなりにある編集ボタンを押下します。抽出フィルターはここで作成します。
![](https://assets.st-note.com/img/1705830422670-owi6NryQrB.png?width=1200)
データ抽出条件の設定画面になるので、フィルターの設定を行います。
![](https://assets.st-note.com/img/1705830606207-gGCqiWIAkb.png?width=1200)
![](https://assets.st-note.com/img/1705830690465-9czvOSg5rI.png?width=1200)
(ワークシート内のフィルターと同様に条件や上位指定での設定も可能)
こうすることで条件をしぼった状態でデータを抽出することができ、Tableauワークブック内で使用するデータを必要なものに限定することができます。
特に元データの件数が膨大な場合などにおいては、ここで必要なデータに絞って抽出しておくことはパフォーマンスの観点からも必要そうです。
3)集計と行数
抽出フィルターとは少し話が逸れますが、同じようにワークブックで使用するデータを絞る「集計」と「行数」の設定も見てみます。
集計は特定のディメンションでメジャーを集計して出力する指定です。
例えば、ワークシートで以下のような指定をした状態で集計の「表示されているディメンションで集計」にチェックを入れ、さらに「未使用フィールド」をすべて非表示を押下すると
![](https://assets.st-note.com/img/1705836078248-qSFbTQtePG.png?width=1200)
![](https://assets.st-note.com/img/1705836219374-JSf4xPmTBX.png?width=1200)
もとのデータがワークシート内で使用されているディメンションとメジャーのみになり、さらにディメンション単位でメジャーが集計された状態でデータ抽出されました。
![](https://assets.st-note.com/img/1705836587544-DqLcEy7TAq.png?width=1200)
![](https://assets.st-note.com/img/1705836547639-e6dspiroWE.png?width=1200)
"(Vizを作成したうえで)本当に必要なデータのみに絞りたい"という場合にはこの方法を使うとパフォーマンス効率の良いデータソースとなりそうです。
また行数は行数を指定することでデータ件数を絞る方法です。上からX行、あるいはランダムにX行(X%)といった指定が可能なようです。
3.データソースフィルター
1)データソースフィルターとは
データソースフィルターは抽出、ライブ接続に関わらず「データソースのうちワークシートでは使用しないデータを除く」ために使うフィルターと理解しています。
![](https://assets.st-note.com/img/1705837164561-2mckYCRIoz.png?width=1200)
データソースフィルターの編集で「追加」を押下、あとは抽出フィルターのときと同じように条件を設定します。
![](https://assets.st-note.com/img/1705837431231-JWUUykcSRS.png?width=1200)
2)どういった場合につかうのか
抽出フィルターと同様に、データソースの段階で利用するデータを絞るため(データを絞ることでパフォーマンス含めViz作成効率を上げるため)に利用すると思っています。
特に「ライブ接続」でデータ取得する場合は、抽出フィルターは使えないため、データソースを絞る場合はこのデータソースフィルターを使うことになります。
またViz作成するなかでデータソースを絞っていきたい場合も、抽出時点で絞るのではなく、データソースフィルターを利用した方が良さそう(手戻りが少ない)と感じました。
4.まとめ
ここまでクエリパイプラインのうちデータソース段階でのフィルターについて試してきました。
これまで、データソースフィルターは少し使ったことがあったものの、抽出フィルターはあまり意識したことがありませんでした。
最初の段階で必要なデータに絞って抽出しておく場合はもちろん、
「Vizに必要なデータのみを必要な単位に集計して抽出する」という方法はパフォーマンス向上の観点では活用できる手段だと思います。
一方で、抽出フィルター/データソースフィルターいずれの場合もデータソースの段階で絞り込みを行ってしまうため、
・Viz作成後にフィルターを変更した場合(特にフィルターを外した場合)に、思わぬ影響が出ることがある
・Vizを複数人で共有した場合、他の人がデータが絞られていることに気づかない可能性がある
といった注意点は意識する必要があると感じました。
これらのフィルターを使用する場合は、フィルターしていることが分かるようにどこかに明記しておくことも必要かもしれませんね。
次の記事では
コンテキストフィルター以降のフィルター(=ワークシート内でのフィルター)について見ていきたいと思います。
お読みいただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?