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

tl;dr;

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

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

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

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

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 コマンドで行うとやりやすいかと思います。

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

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

query_result_id を確認する

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

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

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

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

 

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

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