SQLでパラメーターを利用する方法

SQLクエリの中でパラメータを利用すると、クエリ自体を変更せずにSQLのクエリを動的に生成できます。

以下はMySQL データベースからインポートされた売上データです。

Clicking on the token inside the Source step to open the SQL editor.

データソースのステップのトークンをクリックしてSQLエディターを開きます。

以下のようにシンプルなSQLのクエリがあったとします。

ここで、この SQLのクエリをパラメータ化して、必要に応じてクエリ自体を変更することなく、「Order Date(注文日)」と「Market(マーケット)」の値を動的に設定できるようにします。

パラメーターの作成

パラメーターボタンをクリックして、パラメーターペインを開きます。

この時点ではパラメーターはありません。パラメーターペイン上部の「パラメーターを作成」ボタンをクリックして、パラメーターの設定ダイアログを開きます。

今回は、2つのパラメータを作成します。1つは、「Order Date(注文日)」の条件に使用される「Date(日付)」型のパラメーターで、もう 1 つは、「Market(マーケット)」の値を設定するために使用される「Character(文字)」型のパラメーターです。

Date(日付)型のパラメーター

パラメーターの設定ダイアログの上部の「+(プラス)」ボタンをクリックすることで、新しいパラメーターの作成が可能です。

なお「Order Date(注文日)」の列は日付型のデータのため、データ型に「Date(日付)」を選択することを忘れないでください。

続いてデフォルトの値を設定します。今回は、「特定の日」を選択し、「2012-01-01」を設定します。

日付の入力が完了したら、「保存」ボタンをクリックします。

Character(文字)型のパラメーター

次に、「Market」のパラメーターを作成します。

再度、パラメーターの新規作成ボタンをクリックし、名前に「Market」と入力し、データ型に「Character(文字)」を選択します。

なお今回はドロップダウンのパラメーターを作成し、複数の値を選択できるようにします。

そのため、入力タイプとして「値のリスト(複数選択)」を選択し、スタイルに「ドロップダウン」を選択します。

値の指定がない場合は全選択とする

ここで重要なことがあります。

仮にドロップダウンのパラメーターで何も値を選択しなかったときに、SQLのクエリでは全ての値が選択されるように、言い換えれば、全てのマーケットのデータを返したかったとします。

そのようなときには、「値の指定がない場合は全選択とする」にチェックをつけてください。ことき「全ての値を返す」を選択します。これにより、パラメーターのドロップダウンで値を選択しなかった場合、すべてのマーケットの値が返されるようになります。

値のリストの作成

SQLのクエリを書いて、全てのマーケットの値を含むデータフレームをすでにインポートしている場合は、「データフレームから値を取得」を選択して、データフレームを選択することが可能です。

ただし、今回は想定されるマーケットの値を直接入力します。

なお、パラメーターではデフォルト値を設定することができますが、その必要はありません。なぜなら、今回は「値の指定がない場合は全選択とする」オプションを設定しているからです。

デフォルトの値を設定しない場合、このパラメーターはSQLのクエリで全ての値を返すようになります。つまり、全てのマーケットのデータが返されるということです。

問題がなければ、「保存」ボタンをクリックします。

いよいよこれらのパラメーターを使用します。

SQLにパラメータを埋め込む

SQLエディターに戻り、元の日付の値を「Order_Date」のパラメーターに置き換えます。

「@」を入力すると、選択できるパラメーターのリストが表示されます。

同じように、元のマーケットの値を「Market」パラメーターに置き換えます。

「@」と入力するとパラメーターのリストが表示されるので、「Market」のパラメーターを選択します。

このとき、パラメーターを括弧で囲むことを忘れないでください。

パラメーターを実行する

SQLに埋め込んだパラメーターを試していきます。

「パラメーター」ペインの上部にある「更新」アイコンをクリックします。

するとSQLのクエリの実行に必要なパラメーターが検索されたうえで、パラメーターが表示されます。

これでOrder Date(注文日)とMarket(マーケット)の両方のパラメーターで値を選択し、「実行」ボタンをクリックできるようになります。

すると、クエリ内のパラメーターを選択・記述した箇所が、選択された値に置き換えられ、更新されたSQL クエリが実行され、MySQLデータベースからデータが取得されます。

値が選択されていない場合

なお、先程、Marketのパラメーターを作成した際、「値の指定がない場合は全選択とする」オプションを設定したことを思い出してください。

仮にドロップダウンから何も値を選択せず、クエリを実行したとします。

すると全てのマーケットの値が返ります。

サマリビューやチャートビューなどでパラメーターを指定してSQLを実行する

SQLのクエリでパラメーターを設定したら、ほとんどの場合、SQL エディターを開いてパラメーターの値を変更することはありません。

その代わりに、サマリー、テーブル、チャート、アナリティクスなどのビューの1つから直接、パラメーターペインを開き、パラメーターの値を変更できます。

すると、更新されたクエリが実行され、データがインポートされ、表示されているビューが動的に更新されます。

ステップの右側上部のパラメーターボタンをクリックしてパラメーターペインを開きます。

続いて任意の値を選択して「実行」ボタンをクリックします。

すると更新されたデータを確認できます。

ダッシュボードやノートでパラメーターを実行する

今回はデータのみでパラメーターを使用する例でしたが、チャートを作成し、そのチャートをダッシュボードまたはノートに埋め込むことで、ダッシュボードあるいはノートのUIからパラメーターの値を変更し、新しくインポートされたデータでダッシュボードやノートの出力を再生成することができます。

サーバーでパラメーターを利用して動的にSQLクエリを実行する

多くの場合、このパラメーター化されたデータを他のユーザーに共有して、SQLのクエリを書かずにパラメーターの値を変更しクエリを実行して、データを取得できるようにしたいと考えます。

そういったときには、データを Exploratoryサーバーにパブリッシュできます。

サーバーにデータをパブリッシュしたら、Web ブラウザからパブリッシュされたデータを開きます。

パラメーターをExploratoryサーバーで使用するときには、「インタラクティブ・モード」をオンにします。

「インタラクティブ・モード」をオンにすると、サーバーでもExploratoryデスクトップと同じように、パラメーターの利用が可能です。

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio