AlteryxのDynamic Inputツールの話

alteryx

こんにちは、小澤です。

今回は、AlteryxのDynamic Inputツールについての説明を書かせていただきたいと思います。

image188

Dynamic Inputツールとは

Dynamic Inputツールでは、入力に関する情報を動的に扱うことができます。 Input DataツールやText Inputツールと異なり、Dynamic Inputツールには入力側のコネクタも存在しており、他のツールが出力したデータの内容に基づいて取得するデータを選択できるという仕組みになっています。

dynamic1

使ってみる

では、どのように使うのか見てみましょう。 Dynamic Inputツールでは、設定項目のうち「Read a List of Data Sources」を選択しているか、「Modify SQL Query」を選択しているかで目的や動作が変わってきますのでそれぞれ解説していきます。

Read a List of Data Sourcesの場合

こちらの設定を行った場合は、同一の構造を持つ複数のデータを取得するのに利用します。 これは、複数ファイルやデータベース上の複数テーブルをまとめて読み込む時に利用できます。

ワークフローは以下のような非常にシンプルなものです。

スクリーンショット 2017-07-06 9.39.30

Text Inputツールでは、3つのファイル名を指定しています。

スクリーンショット 2017-07-06 9.40.36

Dynamic Inputツールでは、以下のような設定をしています。

スクリーンショット 2017-07-06 9.42.40

Input Data Source Templateでは、テンプレートとなるファイルを選択します。 Dynamic Inputツールでは、複数のファイルを同時に読み込むことが可能ですが、それらが全て同一のデータ構造になっている必要があるため、テンプレートとしてそのデータ構造になっているファイルを指定します。 この部分は実際に読み込みたいファイルのうちの1つを指定しておくなどで問題ありません。

続いては、Read a List of Data Sourcesを選択している場合の設定となります。

Fieldの項目では、データソースのリストが記載されたフィールド名を指定しています。 今回の場合ですとText Inputで入力された項目のフィールドがfile_nameとなっているのでそれを指定しています。

続いての、Actionは、どのような変更を行うかになります。

今回設定している、「Change File/Table Name」では、ファイル名やSQLのテーブル名を変更します。 テンプレート指定したファイルのうち、ファイル名となっている、「Iris-setosa」となっている部分をFieldで指定した値に置き換えた各ファイルを読み込みます。 Prepend Prefix to File/Table Name, Append Suffix to File/Table Nameは行頭, 末尾に指定した文字列を追加するもので、それ以外の動作は同じになります。

最後にBrowseツールなどで確認すると3つファイルが読み込まれ、結合された状態になっているのが確認できるかと思います。

ちなみに、同様の処理をDynamic Inputツールを利用せずに実現すると、以下のようになります。

スクリーンショット 2017-07-06 10.31.18

3つファイルをそれぞれInput Dataツールで受け取って、それをUnionツールで結合しています。

このように、他のツールを使っても実現可能なことをするツールがあるのでしょうか? それには2つの理由があります。

1つ目は、入力対象となるファイル数が非常に多く、かつ「*」などを使って全部いっぺんに読み込むことができないような時にDynamic Inputツールを利用すると効率的です。

2つ目は、途中の処理によってデータが生成されるまで、どんなファイルが入力の対象となるか不明な場合はUnionツールによる結合ではそもそも対応できません。 例えば、入力となるファイルのパスがデータベース上に記述してあり、まずはそのデータを取得して...といったワークフローを実現する際にDynamic Inputツールであればそのままデータベース上にある値を利用できます。

Modify SQL Queryの場合

こちらは、データソースとしてデータベースを利用している際のSQLの一部を書き換えてくれるものになります。

こちらも、実際に動かしてみますが、ワークフローの構成は、先ほどの「Read a List of Data Sources」と同じになりますので、省略します。

まずは、Text Inputツールで入れている項目を見てみましょう。

スクリーンショット 2017-07-06 13.08.16

2つのフィールドで1行のシンプルなデータになっています。

Dynamic Inputツールの設定は以下のようになっています。

スクリーンショット 2017-07-06 13.10.26

今回は、入力のデータソースにSQL Serverを利用しています。 テンプレートの設定は以下のようなSQLを発行するものになっています。

select 
  * 
from 
  dbo.iris 
where
  dbo.iris.species = 'Iris-setosa' and 
  dbo.iris.petal_width >= 0.5

ここで、Modify SQL Queryの方を選択し、Addを押すといくつかの選択肢が出てきます。

スクリーンショット 2017-07-06 13.14.44

今回はこの中から、「SQL: Update WHERE Clause」を使って、where句の一部を直前のツールから入力された値で置き換えるという処理をします。 該当項目を選択すると以下のようなウインドウが表示されます。

スクリーンショット 2017-07-06 13.16.19

SQL Clause Updateでは、ドロップダウン形式でSQL中のwhere句の中身が選択できます。 今回はandで複数つないでいるのでそれらが一覧に表示されます。

スクリーンショット 2017-07-06 13.18.40

続いて、Text to Replaceで置き換え対象となる部分を選択します。

最後にReplacement Fieldで置き換え対象となる入力のフィールドを選択してやることでクエリ実行時にその部分を置き換えてやることが可能です。

今回の場合は、2つAddすることで2箇所を置き換えています。

スクリーンショット 2017-07-06 13.21.42

あとは、実行してやることで、置き換わったSQLによる結果が取得できているのが確認できるかと思います。

特定の期間で集計するような処理で「当日(あるいは前日)からn日前まで」のような期間が「今日の日付」などから計算のみによって出せる場合は、Date Time Nowツール, Fomulaツールなどを利用することで、実行時に指定することなく対応するといったことも可能になります。 また、その場合はAlteryx Serverで定期実行する場合にも有用でしょう。

終わりに

今回は、AlteryxのDynamic Inputツールについて解説しました。 ツールの全ての機能は紹介しきれていませんが、これだけでも便利に使う方法はいろいろ思いつくのではないでしょうか。 ぜひ、他の機能の部分も含めて一度試してみてください!