📊

Redash Query Results の使い方

2021/08/31に公開

Query Results とは?

複数のクエリ結果を結合したクエリを書くことができる機能。
特に異なる Data Source を使った複数のクエリを結合するのに有用。

例) usersarticles のテーブルが異なる Data Source 上にある場合、
users / articles それぞれに対してクエリを書き、Query Results 機能で結合して使う。

公式ドキュメント:
https://redash.io/help/user-guide/querying/query-results-data-source

前提

  • Redash のバージョンが v3.0.0 以上であること
  • Data Source に Query Results が追加されていること

準備

Data Source が異なる2つのクエリを作成しておく

使い方

how to use

Tips

注意:普段使っている関数や演算子が使えないことがある

Redash の Query Results は SQLite ベースで実装されているので、普段 MySQL や PostgreSQL を使っていたとしてもデータソースを Query Results にすると強制的に SQLite で書かないといけなくなります。

redash_mod_error

↓↓

redash_mod_no_error

特に割合などを計算するなど、結果が小数になるような割り算をしたい場合は 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句で可読性を確保しておくのがおすすめ。
readable sample1
readable sample2

アクセス制限

Query Results で参照したクエリで使っている Data Source へのアクセス権限がない場合、Query Results で書かれたクエリを再度実行することはできない。

ただし、Query Results で書かれたクエリを最後に実行したときの結果を参照することはできる。

Discussion