Exploratoryではパラメーターを利用することでデータの整形・加工などのラングリングにおける一連の処理をインタラクティブもしくはダイナミック(ある部分を変更・更新することで、その変更・更新が自動的に全体に反映されるような状態)に行えます。
例えばSQLのクエリ(パラメタライズド・クエリ/パラメータ化クエリ)やフィルターのステップをダイナミックにしたり、タッシュボードの利用者が注目したいところに絞るなどして、ダッシュボードをインタラクティブに利用できます。
このノートでは具体的にパラメーターがどのように動くかと、パラメーターをどのようにして使うかについて説明します。
早速、パラメーターがどのように動くか見てみましょう。以下4つのポイントごとに説明していきます。
今回はサンプルとしてあらかじめ用意されているflight delay dataを使っていきます。このデータフレームでは一行一行がフライトのデートになっており、キャリア(航空会社)の名前、どの空港を出発してどの空港に到着した、それが何時であったか、出発や到着時間が遅延時間が何分であったかといった情報を含んでいます。
それでは実際にパラメーターを作成してみます。例えばキャリアコード(キャリア名をコード化したもの)でフィルターする時に、ある特定のキャリアコードに固定してフィルタをかけるのではなく、状況に合わせて、フィルタをダイナミックにかけたいとします。
そういった時はまずは通常のフィルター設定と同じように、フィルターのステップを作成します。今回は複数のcarrier codesを選択したいので、カラムヘッダーメニューから
フィルタ->どれかに等しい(複数の値)
を選択します。
するとフィルタのダイアログが表示されるので、パラメーターにチェックをつけます。
パラメーターはこれから作成するので、ここでは「パラメーターを作成」をクリックします。
そうすると空のパラメーターダイアログが表示されます。
次に「新規パラメーターを作成」をクリックします。すると、ダイアログの右側にパラメーターの設定項目が表示されます。
ここでは'carrier_code'というパラメーターを作成していきます。なおパラメーターの名前にはスペースやダッシュなどの特殊文字を用いることはできません。アルファベット、数字またはアンダーバーのみの利用が可能となっています。
ただ、もし読みやすくするために特殊文字を利用したいのであれば、「表示名」にチェックをつけて、表示名として特殊文字を利用することが可能です。
加えてここではデータ型にCharacter(文字)、入力タイプに値のリスト(複数選択)を設定します。
「値のリスト(複数選択)」を「パラメーターの入力タイプ」として設定すると、複数の値が選択できるようにになります。フィルタで言うところの「どれかに等しい(複数の値)」もしくは「どれにも等しくない(複数の値)」演算子と同じような動きをします。
例えば「AAもしくはUA」のいった形で複数の航空会社をまとめてフィルタするような'Carrier Code'のパラメーターを作成したいときに、この値のリスト(複数の値)は効果的に使うことができます。
また値のリスト内の値は手動で設定することもできますし、特定のデータフレームの列から参照することも可能です。例えばairplane_delay_2016_09というデータフレームがあったとして、そのデータフレームの'CARRIER'という列の値を参照したいときは、既存のデータフレームから値をコピーにチェックをつけます。
そして、airplane_delay_2016_09をデータフレームを指定して、値の列にCARRIERを選択します。
なお、この参照された値のリストは選択したデータフレームの一番最後のステップの値を参照して生成されています。
場合によっては最後のステップではなく、下記のようにラングリング中の特定のステップから値のリストを生成したいこともあるかと思います。
例えば上記のように「1. ローカル・データ - CSV」というステップでの列の値から、値のリストを作成したいとします。
そういった時はステップにチェックを付けて、1. ローカル・データ - CSVをプルダウンメニューから選択すると、指定したステップから値のリストを生成することができます。
またデフォルト値のチェックボックスを使って、どの値をデフォルトの値として選択するかも指定できます。ここでは'AA(American Airline )'と'DL(Delta Airline)'をデフォルト値として設定します。
ちなみにデフォルト値を全てアンチェックした状態でパラーメーターを設定することも可能です。その場合、もしフィルターステップで「どれかに等しい(複数の値)」もしくは「どれにも等しくない(複数の値)」を使っていれば、全ての値が選択されることになります。
パラメーターの作成が終わったので、実際に使ってみましょう。今回はフィルターステップでパラメータを利用して、ダイナミックにフィルター条件を変更してみます。
フィルターのダイアログを表示させて、作成したパラメータを選択します。
フィルターを実行すると、'AA'と'DL'のみが含まれるデータに更新されたことが確認できます。
もしインタラクティブにパラメーターの値を変更したいのであればパラメーターボタンをクリックします。
すると画面右にパラメーターペインが表示されるので、ここで好きな値を選択して実行ボタンをクリックします。
なおパラメーターの設定内容を変更したければ、パラメーターの隣になるギヤアイコンをクリックします。
そうすると、パラーメータの設定ダイアログが表示されるので、こちらから内容の変更が可能です。
Exploratoryは作成したダッシュボード、ノート、スライドなどのレポートにチャートが含まれる場合、チャートに利用されている全てのパラメーターの情報を自動的に取得します。
ですのでダッシュボード、ノート、スライドなどのレポートでパラメーターを利用したいときには特別な設定は不要で、画面上部にあるパラメーターボタンをクリックするだけで全てのパラメータが表示されます。
もしパラメーターの順番を変えたいようであれば、パラメータペインの左上部のレイアウトボタンより変更が可能です。
またパラメーターで選択した値は自動的に保存されますので、次回ダッシュボードを開いた時にダッシュボードに表示される内容は保存されたパラメーターの内容通りのものとなります。
ダッシュボードおよびノートではパラメーターは以下のように表示されます。
ダッシュボード、ノート、スライドなどのレポートをチームのメンバーやビジネスパートナーに共有する際、パラメータを使うとレポートの閲覧者は自身が注目したいところに合わせてレポートを更新できるので、とても便利です。
Exploratoryでは作成したダッシュボード、ノート、スライドをExploratory Cloud (exploratory.io )まはコラボレーションサーバにパブリッシュすることで、上記を実現します。
ただしExploratory Cloudまたはコラボレーションサーバにパブリッシュされたダッシュボードはサーバー上(exploratoyr.ioもしくはコラボレーションサーバー)でデータを処理するので、誰がダッシュボード上でパラメータ機能を利用できるかに気をつけて設定する必要があります。
そのため以下のようにパラメーターの実行権限はShareボタンをクリックした権限設定ダイアログにて設定が可能になっています。
'Can Run'権限を設定した人にのみパラメーターボタンが表示されます。
そして権限が与えられたユーザーはパラメーターボタンをクリックすることで、値を変更しパラメーターを実行することができるわけです。
なお一番最初にパラメーターを実行する時、サーバーのインスタンスに接続するため少し時間がかかる場合があるのでご注意ください。
一度接続が確立されると、変更したパラメーターの処理数にもよりますが、早く結果が返ってくるようになります。
以上がパラメーターの基本的な利用方法になります。ここからはパラメーターの活用方法について紹介していきます。
現在サポートされているパラメータのデータの型は以下となります。
「Character (文字列)」というデータ型では入力タイプとして、「テキスト入力」、「値のリスト(単一選択)」、「値のリスト(複数選択)」に対応しています。
「Numeric (数値)」というデータ型では入力タイプとして「テキスト入力」や「スライダー」に対応しています。
スライダーでは最小値、最大値の設定だけでなく、増減の単位の設定も可能です。スライダーはパラメーターペインでは以下のように見えます。
パラメーターのレイアウトはパラメーターペインの左上部のレイアアウトボタンから変更が可能です。
パラメーターペイン内の各パラメーターはドラッグ&ドロップで順番を入れ替えることができます。
特定のパラメーターをパラメーターペインに表示させないこともできます。これはパスワードやAPIキーなど自分だけが見られれば良い値を設定したい時などに便利です。
パラメーターは大別すると二つの場面で活用いただけます。
1つ目がデータのセットアップでの利用です。例えばフィルターをかけたり、計算を作成(Mutate)したり、SQLのクエリの中でのパラメーターを設定する使い方です。
2つ目がインタラクティブに使うケースです。例えばダッシュボードやノート内でパラメーターを利用することでデータをダイナミックに更新する使い方です。
以下のシンタックス(記法)で設定したパラメーターの呼び出しが可能です。
@{パラメータ名}
このパラメーター名は表示名ではなく、パラメーターの名前なので気をつけてください。
フィルターダイアログ内で、パラメーターの選択が可能です。
パラメーターcarrier_codeではデフォルト値が'AA'と'DL'に設定されているのでフィルターステップで実行すると下記のように‘AA’と ‘DL’のみが含まれるデータにフィルターされることが分かります。
Mutate(計算を作成)ダイアログで‘@{’
とタイプすると作成済のパラメーターが表示されます。
例えばThreshold(パラメーター名:delay_threshhold)を20に設定すると、オレンジ色の箱ひげ図の最大値は20になり、青色の箱ひげ図の最小値は20になります。
カスタムRスクリプトをデータソースにする時も利用が可能です。例えば以下は'tidyquant'という株価の情報ができるRのパッケージを利用した例です。
library(tidyquant)
stock_prices <- tq_get(c(@{stock_symbol}), get = "stock.prices", from = @{stock_date})
上記では'Stock Symbol'(証券コード)のパラメータを作成した例です。このパラメーターでは「値のリスト(複数選択)」を入力タイプに設定していて、例えば、GOOG(Google)、AAPL(Apple)といった複数の証券コードの設定を可能にしています。
加えてtq_get関数の'from'という引数に'stock_date'というパラメーターを指定して株価の取得開始日をインタラクティブに取得できるようにしています。
Rスクリプトエディタ画面では以下のように見えます。
これら二つのパラメーターを利用すると、下記のようにチャートを見ながらRスクリプトをダイナミックに更新してデータ・チャートそのものの更新ができるようになります。
これは私のお気に入りです。なんとSQLのクエリもパラメタライズ(パラメーター化)できるのです!
以下シンタックス(記法)でパラメーターをクエリに組み込むことができます。
@{パラメータ名}
具体的に以下のようにSQLのクエリはパラメタライズできます。
select * from testdb.flights
where carrier IN (@{carrier_code})
and day_of_month >= @{day_num}
MySQLに格納されたフライトのデータを取得する時は以下のようになります。
一度インポートが完了すると、パラメーターペインを開いて、パラメーターの値を変更することで、SQLのエディターを開くことなく、ダイナミックにクエリを更新することができます。
データベースからデータを取得して、チャートなどで可視する時にこれほど便利なことはありません。チャートを見ながらパラメーターを更新するだけで、データフレーム、チャートが更新されるのです!
パラメーターはMongo DBでもお使いいただけます。
例えば地図などのチャートにおいてもダイナミックにクエリを更新できます。
チャート内のフィルタダイアログにおいても、パラメーターを選択いただけます。
Exploratoryは利用されている全てのパラメーター情報を自動的に取得し、パラメーターペインに表示します。
例えば以下のようケースがあったとします。
Chart A | Chart B |
---|---|
Parameter A | Parameter B |
具体的にはAというチャートにパラメーターAを含むステップがあるとします。そしてBというチャートにパラメーターBを含むステップがあるとします。
チャートAとチャートBを含むダッシュボードを作成した場合、ダッシュボード上でパラメーターボタンをクリックするとパラメーターAとパラメーターBが表示されます。
一方でチャートAをダッシュボードから削除して、パラメーターペインを開くとパラーメーターAは表示されなくなります。なぜならダッシュボード内のチャートBを生成するのに、パラメーターAは必要ないからです。
当たり前と言えば当たり前ですが、ダッシュボードに必要なパラメーターだけが表示されるわけです。
言い換えればExploratoryが自動で必要なパラメーターの情報のみを取得するのでダッシュボードのためにパラメーターを新たに作成する必要はありません!
これはダッシュボードだけでなく、ノート、スライド、チャート、アナリティクス、デートフレーム全てにおいて同じです。
パラメーターの設定ダイアログは二つ方法で表示させることができます。
1つがパラメーターペインのギヤアイコンをクリックすることでパラメーターの設定ダイアログを開くことができます。
もう1つはプロジェクトメニューからパラメーターをクリックする方法です。