やりたい
- Re:dashで取得したデータを、pythonデータソースを使って、Slackに投稿したい
- Re:dashのalert機能は便利だが、条件が解消しないとずっと出続けてしまう問題があった
準備
- Slack AdminでIncoming Webhooksを設定し、
Webhook URL
を取得する。
- Re:dashには、既にpythonデータソースが用意されている前提。ググればいっぱい出てくる
Slack投稿用のサンプル
import requests
import json
SLACK_URL = "[WEBHOOK_URL]"
content = "`Daijin` は `Hentai`"
payload = {
"text": content
}
data = json.dumps(payload)
response = requests.post(SLACK_URL, data)
実際にやったこと
- Re:dashで取得したある条件に合ったデータをSlackに投稿する
- Re:dash上で定期実行するが、その時間を秒単位では指定できず、ほっとくと重複したデータを投稿してしまう。そこをSlack APIを使って既に投稿したデータは投稿しない処理を加えた。
- 結果75行の割と大きめのソースとなった
その際ハマった注意点
- python側で使うライブラリは、
Data Source
の画面で追加できる。但し、標準ライブラリのみで、pip install
が必要なものはGUIだけではできなそうだった
ここでsaveするだけでimportできるようにはなった
- なぜか関数を作れない。関数を作って実行すると関数内からglobal変数にアクセスできない
- 引数付きのクエリは実行できなそうである
- get_query_resultではクエリは実行されない
- redashの定期実行は割とブレる。1minute毎のやつでも30秒くらいずれる。弊社の環境だと、なぜか90秒サイクルで実行されてた。1秒以内で実行されるクエリなんだが
13:32:20
13:33:50
13:35:20
13:36:50
13:38:20
参考
» Re:Dashでpythonデータソースを使ってクエリ結果をごにょごにょしたい