Redash Query Results の使い方
Query Results とは?
複数のクエリ結果を結合したクエリを書くことができる機能。
特に異なる Data Source を使った複数のクエリを結合するのに有用。
例) users
と articles
のテーブルが異なる Data Source 上にある場合、
users
/ articles
それぞれに対してクエリを書き、Query Results 機能で結合して使う。
公式ドキュメント:
前提
- Redash のバージョンが v3.0.0 以上であること
- Data Source に Query Results が追加されていること
準備
Data Source が異なる2つのクエリを作成しておく
使い方
Tips
注意:普段使っている関数や演算子が使えないことがある
Redash の Query Results は SQLite ベースで実装されているので、普段 MySQL や PostgreSQL を使っていたとしてもデータソースを Query Results にすると強制的に SQLite で書かないといけなくなります。
↓↓
特に割合などを計算するなど、結果が小数になるような割り算をしたい場合は cast,round を駆使しないといけない点には注意が必要です。
参考:https://3ryupg.hatenablog.com/entry/2018/03/09/200000
パフォーマンス改善
複数のクエリを実行したり、Data Source を跨いだりする影響で、Query Results を使ったクエリは実行に時間がかかる。
そこで、 query_100
の部分を cached_query_100
に変更することで、参照先のクエリを再度実行せずに実行済みのクエリ結果を参照することができる。
可読性の向上
Query Results ではテーブル名を query_id
の書式で記載するため、後から他の人がクエリを読むときに何のデータを参照しているのか分かりづらい。
そのため、コメントやAS句で可読性を確保しておくのがおすすめ。
アクセス制限
Query Results で参照したクエリで使っている Data Source へのアクセス権限がない場合、Query Results で書かれたクエリを再度実行することはできない。
ただし、Query Results で書かれたクエリを最後に実行したときの結果を参照することはできる。
Discussion