Redashは放っておくとクエリがドンドン増えていきます。
それ自体が悪いことではなく、むしろ良い傾向だと思いますが、それが放置されているのは問題です。
クエリが探しにくくなることや、定期実行が増えることでRedashが詰まることは定期的な棚卸しで防ぎましょう。
この記事では、いくつかのポイントを紹介します。
なお、この記事はRedash v8で動作確認を行なっています。
直近実行されていないクエリを確認する
しばらく使われていない、もしくは閲覧されていないなどのクエリは管理の邪魔になります。
以下のクエリで直近1年以上使われていないクエリを確認できます。
SELECT queries.id AS query_id,
queries.name AS query_name,
data_sources.name AS data_sources_name,
max(events.created_at) AS last_executed_at
FROM queries
INNER JOIN EVENTS ON queries.is_archived = FALSE
AND events.action = '{{view or execute}}'
AND events.object_type = 'query'
AND queries.id = cast(events.object_id AS integer)
INNER JOIN data_sources ON queries.data_source_id = data_sources.id
WHERE events.created_at <= now() - interval '1 year'
GROUP BY query_name,
data_sources_name,
queries.id
ORDER BY last_executed_at
このクエリを記述すると、以下の画像のようなテキストボックスが出ますが、viewだと過去1年以上閲覧していないクエリが、executeだと過去1年以上実行されていないクエリが確認できます。
がっつり使ってないクエリを掃除したいけど、UPDATE文で一気にやるのは怖い場合に検証としてお使いください。
定期実行を棚卸しする
Redashには定期実行の機能が存在し、ダッシュボードやクエリ単体で気軽に利用することができますが、増えてしまうとインスタンスのリソースを圧迫してしまいます。
また、BigQueryのような従量課金体型のデータソースの場合、余計なお金がかかってしまいます。
利用されなくなったら、都度定期実行を止めるのが理想ですが、それはなかなか難しいので、機会を見つけてまとめて掃除してしまいましょう。
詳細はエムスリーさんのこちらの以下の記事をご確認ください。
年末だしRedashのクエリ棚卸しでもしましょう (調査用サンプルクエリ付き) - エムスリーテックブログ
利用されなくなったデータソースのクエリをまとめてアーカイブする
長くRedashを利用していると、何らかの理由で利用されなくなるデータソースが出てくることがあります。
これらのクエリはまとめてアーカイブしてしまいましょう。
UPDATE queries
SET is_archived = TRUE
FROM data_sources
WHERE queries.data_source_id = {{data_source_id}}
AND queries.is_archived = FALSE
データソースの詳細ページのURLでIDは確認できる他、このようなクエリでも可能です。
select id, name, type from data_sources
なお、データソースを消す場合はゴミ捨て場のようなデータソースを作成し、以下のようなクエリでそちらに移してから行いましょう。
UPDATE queries
SET data_source_id = <移行先のデータソースID>
WHERE data_source_id = <移行元のデータソースID>;
もし移行せずに消してしまった場合クエリが一覧から見られなくなります。
もし消してしまった場合はこちらの記事を参考に復旧しましょう。
RedashのData Sourcesを解除してQueriesが吹き飛んだときの対処 - VTRyo Blog
まとめ
Redashは冒頭にも書いた通り、何もしないとドンドンクエリが増えていき管理が難しくなっていきます。
定期的に見直しをして、快適なデータ分析・集計を行えるようにしましょう。
また、今回は厳選して3点のみ紹介しましたが、こういうのもするといいよ!というものはたくさんあると思うので、気軽にコメントで教えていただけたら幸いです。