RedashのQuery一覧を保存する方法

副業でRedashの情報を保存したいという要望があった。

AMIをとるのは大げさだよなぁと思ったのでqueryの一覧を取得する方法について調べてみた。


とりあえず世の中に同じようなことを考えてる人がいないかを調べてみた。

redashmanを使ってRedashのクエリをお手軽にバックアップするという記事があった。ariarijp/redashmanというgolang自作ツールを介してRedashAPIを叩いているようだ。

RedashAPIのドキュメントはこれだ。Integrations and API。queryのCRUDとdashboardのCRUDが用意されている。api tokenを発行してそれを使えば楽に操作ができるようだ。

ariarijp/redashmanはすごく良さそうなのだが、自分が欲しいのはqueryの一覧であって豪華なAPI Clientではない。golangを入れることすらめんどくさいのだ。

今回の用途では雑にcurlで取得できればよかったので以下のように投げた。あとは必要なフォーマットに合わせてよしなにjqを使えば良い。

$ curl "https://<redash url>/api/queries" \
    -H "Accept: application/json" \
    -H "Authorization: Key <auth key>" \
    | jq ".results" | jq "map({ id, name, query })"

responseはこんな感じ。綺麗に出せた。

[
    {
        "id": 13,
        "name": "ユーザ一覧",
        "query": "select * from users;"
    },
    {
        "id": 12,
        "name": "ユーザ詳細",
        "query": "select * from users where id = 1;"
    }
]