redash API で パラメータを動的に変えてクエリを受け付ける

tl;dr;

redash API で パラメータを動的に変えてクエリを受け付ける方法を紹介します。

サードパーティを使わず行います。今回の version は redash v6ですがおそらくそれ以降でも可能かと思います。

手順をご紹介する前の前提条件

私の環境では検証環境としてすぐ起動できる redash の環境を利用します。

# git clone
git clone https://github.com/GitSumito/redash-blue.git
cd redash-blue

# DB 初期化
docker-compose run --rm server create_db docker-compose up

# 起動
docker-compose up -d  

http://127.0.0.1/ へ接続し、データソースの設定などを適宜行います。

DBのcredential 情報などは下記をご覧ください。

https://github.com/GitSumito/redash-blue/blob/master/README.md

 

動的クエリを作成する

その後、 Create -> Query に移動し、変数を受け付けるカラムを書きます。

この場合はクエリを code という引数で受け取ります。

 code に JPN といれると、redash が where ContryCode = "JPN"と組み立ててくれる仕組みです。

これをブラウザからではなく、RestFull API で行うようにするというのが今回の趣旨です。

作成した Query は publish してください、

事前準備

ユーザーのAPI keyを確認します。

http://127.0.0.1/users/1

を開けばAPI keyを確認することができます。

このAPI keyを確認します。

ジョブを登録する

引数は p_xxxx というパラメータ名で受け付けるようです。
code という引数を設定したので、今回は p_code というパラメータ名になりました。

これを POST で送ります。curl コマンドで行うとやりやすいかと思います。

curl --request POST \
--url 'http://127.0.0.1/api/queries/1/refresh?p_code=IND' \
--header 'Authorization: Key ajxxxxxxxxxxxxxxx'

受け付けられると、 以下のようなレスポンスが返ってきます。

ID を控えてください。今回登録したジョブを、以下のIDを用いて確認することができます。

query_result_id を確認する

ジョブのIDをパスパラメータとして渡します。

また、api_keyを後ろにつけてください。

curl "http://127.0.0.1/api/jobs/93452aa6-8569-43fc-b816-cb441ce80e03?api_key=ajxxxxxxxxxxxxxxx"

query_result_id が返ってきます。こちらを用いて結果を確認します。

query_result_id を用いて結果を確認する

 

curl -s -H 'Authorization:Key ajxxxxxxxxxxxxxxx' -H 'Accept:application/json' -H 'Content-Type:application/json' http://127.0.0.1/api/query_results/8

以下の通り、ContryCode `IND`の情報を取得することができました。

今回の version は redash v6ですがおそらくそれ以降でも可能かと思います。