はじめに
こんにちは。データサイエンティストの曽我です。
Redashというダッシュボードツールがあるのですがご存知でしょうか。
ダッシュボード機能だけではなく、クエリをパラメータで動的に変更できたりする優れものです。そんな便利なRedashですが、Redashで使用しているクエリの管理はどうされていますか?
弊社では試行錯誤の末、GithubでマージされたクエリがRedashに自動的に反映されるようにしています。
この記事ではどのようにRedashを管理、運用しているのかについて書いていきます。
背景
実際にRedashを使い始めてから不便と言いますか、痒いところに手が届かないと思うことがでてきました。
- クエリの数が増えていくと検索などだけでは対応しづらく、クエリに対して管理面での融通がきかない
- クエリのレビューやver管理ができない
1についてはGoogle スプレッドシートで管理をすることにしました。
2についてはGithubを使い、レビューとver管理をできるようにしました。
しかし、GithubとRedashは連携ができていないため新たな課題が生まれます。
- Githubでレビューを行ったクエリを手動でRedashに反映させる必要がある
- 手動での反映となるので更新漏れが起こるリスクがある
- そもそも手動でRedashに反映させるのに手間がかかるため面倒くさい
GithubでマージされたクエリがRedashに自動的に反映させるようになったらどれだけ楽なのだろう。
そのような思いから始まりました。
Redashクエリ一覧の管理
Redashクエリの一覧をスプレッドシートを用いて管理しています。これにより検索性や視認性が向上しました。
GithubでマージされたクエリをRedashに反映させる
では本題に入ります。なんとなくイメージされているかもしれませんが、作業の流れとしては以下になります。
- クエリを作成し、Gitでプルリクを作成する
- レビューが行われ、問題なければmainブランチにマージする
- mainブランチにクエリがマージされるとRedashに反映される
- 新規のSQLファイルがマージされた場合、Redash上でクエリを新規作成する
- 既存のSQLファイルがマージされた場合、Redash上の該当クエリをアップデートする
文字に起こすとタイトルそのままですね。作業者は1,2を行うだけです。3に関しては自動的に処理されます。
この運用には以下のような利点があります。
GitでレビューされたクエリがRedashで使われるのでデータの信頼性が向上する
Git上にあるクエリがRedashに使われるのでデータソース元が常に1箇所になっている
Redash更新の手間が不要なので人的リソースに優しい
GitとRedashの連携について
仕組みですが、Redashクエリ一覧のスプレッドシートも使っています。
内部的処理の概要ですが、以下のようになっています。
- GIthubでWebhookの設定を行い、payload URLにGithubの情報をPOSTする
- POSTされたpayloadを監視し、mainブランチに対してSQLファイルがpushされたら処理を行う
- 処理内容はModified, added, removedの3つに分類し、それぞれで処理を行う
まとめ
いかがだったでしょうか。設定含めて多少手間はかかりますが自動的に反映させる運用にしてから管理面での向上、手間の削減といった良いことが多くありました。
このようにクライアント課題を解決するだけではなく、そのために日々行われている業務を効率化することも大事だと考えています。