
はじめに
こんにちは。 開発本部 開発1部 デリッシュリサーチチームでデータエンジニアをしている吉田です。
今回は、Redashのスケジュールクエリを整理し、データウェアハウス(DWH)のコストを最適化した話をご紹介します。
背景
デリッシュキッチンでは、データ分析や可視化のためにBIツールとしてRedashを活用しています。
データ基盤としては、DWHのTreasureDataにDatabricksで加工したデータを集約し、RedashからTreasureDataへクエリを発行してデータを可視化する、というアーキテクチャです。
そんな中、TreasureDataのクエリ実行時間が契約の上限に近づき、コスト増加の懸念が生じていました。
課題
課題となっていたのが、Redashに登録された多数のスケジュールクエリです。
これらのクエリは長年棚卸しされておらず、中には誰にも見られていない、いわば「幽霊クエリ」が実行され続けている状態でした。
TreasureDataはクエリエンジン(Presto)の稼働時間に上限があるため、利用実態のないクエリの実行は、無駄なリソース消費とコスト増に直結します。
取り組み
そこで、不要なスケジュールクエリを特定し、停止・削除する取り組みを行いました。
手順は以下の通りです。
- 利用されていないスケジュールクエリの洗い出し
- クエリ所有者への削除可否の確認
- 不要なスケジュールの一斉削除
1. 利用されていないスケジュールクエリの洗い出し
Redashは、クエリの実行や画面の閲覧といった操作ログがeventsというテーブルに保存されています。
このeventsテーブルを分析し、「定期実行されているにもかかわらず、その実行結果が一定期間誰にも閲覧されていないクエリ」をリストアップしました。
2. クエリ所有者への削除可否の確認
洗い出したクエリの一覧を作成し、それぞれのクエリの作成者にスケジュールの削除、またはクエリ自体の削除が可能かを確認・依頼しました。
これにより、現在は利用されていないものの、今後利用する可能性があるといったクエリを残しつつ、安全に整理を進めることができました。
3. 不要なスケジュールの一斉削除
関係者からの確認が取れたクエリに対して、一斉にスケジュールを削除しました。
結果
この取り組みの結果、スケジュール実行されていたクエリの総実行時間を約50%削減することに成功しました。
これにより、TreasureDataのPrestoの稼働時間を大幅に圧縮し、適切な利用範囲に収めることができました。
まとめ
今回は、Redashのイベントログを活用して不要なスケジュールクエリを特定・整理し、DWHの負荷削減とコスト最適化を実現した事例をご紹介しました。
今後は、定期的な棚卸しの仕組み化や、クエリ作成時のガイドラインを整備することで、費用対効果の高いデータ活用基盤を維持していきたいと考えています。