ブログ - 日本語

アナリティクスに関する聡明な考えに触れ、インサイトとアイデアが得られます。
Alteryx Certified Partner
Alteryx Certified Partner

Alteryxの処理はInput Dataツールを使ってファイルやデータベースなどからデータを取得するところから始まることが多いです。
Input Dataツールをデータの入力はあらかじめワークフロー上で設定しておいたデータソースから取得することになります。

 

データ入力を行う際には常に同じものでいい、というわけではなく常に最新の情報に更新されていくものを都度利用したいという状況が多くあります。
その際、ワイルドカードを使って複数ファイルを同時に読み込むといったことも可能ですが対応できない状況もあります。

 

以下のような状況を考えてみましょう。
まずやりたいことは

 

  • 直近1ヶ月分のデータで月次のレポートを出す
  • 内容は毎月同じなので対象期間だけ変えればワークフローはそのまま使える

となります。
データがどのようなに保存されているかは様々考えられますが、以下の2パターンのどちらかという状況を考えてみます。

 

  • 1日1ファイルで同一ディレクトリに保存される
  • 保存された日時の情報を持ったデータベースに保存されている

前者のパターンであれば、保存日が実行のタイミングから1ヶ月前までの範囲に含まれるもの、
後者であれば、日時列の範囲を実行時のタイミングから計算するという処理が必要になります。

 

Dynamic Inputツールを利用することで、こういった別な処理によって求めた結果に基づいて入力対象を取得し、それらを利用するといったことが可能になります。

 

直近のファイルのみを取得してみる

では、実際の利用方法を見ていきます。
以下のようなワークフローを実装します。

 

wf.png

 

このワークフローで実現したいことは以下の通りです。

 

  • 1日1つ日付が名前に入ったファイルが生成される
  • 現在は2019/01/01 - 2019/01/10までの期間のファイルがある
  • このディレクトリから2019/01/05 - 2019/01/10の期間のファイル読み込む

まずはDirectoryツールで対象のディレクトリのファイルリストを取得します。
これによって以下のようにファイル一覧が取得できます。

 

file_list.png

 

これに対して、Text To Columnsツールを使って、日付部分のみを取り出します。
以下のように"_."としてすることで、この2つのどちらかで分割されます。

 

ttc.png

 

結果は以下のように分割されています。

 

ttc_result.png

 

FileName2列が日付部分になっているので、計算しやすいようにSelectツールで整数に変換したのち、Filterツールで以下のように対象となる範囲に絞ります。

 

[FileName2] <= 20190110 and [FileName2] >= 20190105

 

これで必要な期間のみのファイルリストに絞り込めました。
あとは、このリストのファイルを入力として中のデータを読み込めれば完了です。
データとして持っているファイルを読み込むにはDynamic Inputの出番です。

 

データがExcelファイルなので、まずはシート名を含めた読み込める形式に変換します。
Directoryツールの出力にはファイル名だけでなくフルパスも含まれているので、それにシート名も結合しましょう。

 

[FullPath] + "|||Sheet1"

 

Dynamic Inputツールはこのパスを使ってファイルを読み込みます。

 

dynamic_input_conf.png

 

「Input Data Source Template」にはMacro Inputツールと同様、テンプレートとなるファイルを入れておきます。
ここでテンプレートとして指定したファイル自体が読み込まれるわけではないですが、形式を合わせておきたいので、ディレクトリ内のどれかを適当に選択しておきます。

 

続いて、テンプレートに対して、何を置き換えたものを実際の入力対象にするか指定します。
指定可能なものは

 

  • データソース(入力ファイルやDBの接続先)を置換する
  • データベースから取得する際のSQLの一部を置換する

のどちらかとなります。
今回は、読み込むファイルを置き換えるので「Read a List of Data Sources」を選択しています。

 

続いて、FiledとActionで「どの列の値」で「テンプレート中の何を」置き換えるかを指定します。
ここでは、フルパスにシート名を付与したもの(inputs列となっています)でファイルパス全体を置き換える(Change Entire File Path)という設定をしています。

 

これによって、この列のデータに記載されたすべてのファイルを読み込んでUnion結合した結果を出力します(わかりやすくするためにファイル名の列を入れています)。

 

result.png

 

これで利用したい範囲のデータを動的に決定する仕組みができたので、あとは実際に行いたい分析や加工の処理を通常通り行えます。

Yuya Ozawa

My hobby is to create workflows that prohibit the use of maniac techniques and specific tools. I can use both R and Python, but for the time being, I'll do it with Alteryx. Working in data analysis and machine learning.

My hobby is to create workflows that prohibit the use of maniac techniques and specific tools. I can use both R and Python, but for the time being, I'll do it with Alteryx. Working in data analysis and machine learning.