間違ってアーカイブしちゃったRedashのQueryを元に戻す方法

結論

※ ただし、アーカイブしちゃったQueryがダッシュボードから参照されている場合、ダッシュボードからQueryが消えたままになる。頑張って手動で戻さないといけない

Redashとは

こちら読んでください

redash.io

何をやらかしたか

Redashでとある作業をしてて、Redash API経由で1000Queryくらいをアーカイブしてしまった...

RedashのUI上ではアーカイブから元に戻す導線が見つからなかった...

さあ、どうしたもんか🤔

間違ってアーカイブしちゃったQueryをRedash APIで元に戻す

「Redash APIを使えば元に戻せるのでは?」と考えた

まずは、Redash APIを使ってアーカイブされたQueryのレスポンスを確認してみた

{
    "can_edit": true,
    "version": 1,
    "is_archived": true,
    "query": "",
    "id": 1149,
    "data_source_id": 1,
    "name": "New Query"
}

is_archivedtrueになっていることがわかった

じゃRedas APIのQuery更新APIのパラメータにis_archivedfalseで実行すれば、元に戻せるのでは?と考えた

if __name__ == '__main__':
    try:
        for i in range(100, 1100):
            data = {
                "id": i,
                "is_archived": False,
            }
            response = requests.post(
                'https://redash.test.com/api/queries/{}'.format(i), json=data, headers=auth_headers('API_KEY'))
            response.raise_for_status()
    except Exception as ex:
        logging.exception(ex)

こんな感じのPythonスクリプトを書いて実行してみたところ、アーカイブされていたQueryが元に戻りました🎉

よかった😆