Alteryxで複数のディレクトリのファイルを一気に読み込む方法を紹介します
ディレクトリツールは複数ファイルを読み込む際に使うことができますが、例えば、Cドライブ直下にある複数フォルダから読み込む場合、ディレクトリツールでCドライブ自体を指定すると大量のファイルリストを読み込むことになり、非常に時間がかかります(以下のような設定で可能です)。
今回は、ディレクトリツールをマクロに組み込むことで、離れた場所にある複数のディレクトリを一度に読み込む方法を紹介します(どこかの単一のフォルダ直下にある複数フォルダを読み込むような場合は、上の設定でディレクトリをうまく指定すればこの記事にあるようなことをする必要はありません)。
複数ディレクトリからファイルリストを読み込む際、通常であれば複数のディレクトリツールを使うところですが、マクロ化することで、ディレクトリリストから一気にファイルリストを作成することができます。ファイルリストさえできてしまえば、あとは通常の複数ファイル入力と同じように読み込むことができます。
Info
ディレクトリツールやファイル入力ツールのようにワークフローの出発点になるようなツールをワークフローの途中に挟み込みたいような場合は、今回紹介するような方法でマクロ化することでワークフロー内で利用することが可能になります。
具体的なやり方
複数のディレクトリから一気にファイルリストを得るためには、ディレクトリツールをバッチマクロに組みこんで実現します、コントロールパラメーターツールでディレクトリツールの「ディレクトリ」をコントロールします。
※コントロールパラメーターツールを組み込んだ時点でバッチマクロという扱いになります
マクロの内容
実際のマクロの中身は以下のようになります。
①コントロールパラメーターツール
基本的に設定は不要です。コントロールパラメーターとして読み込むフィールド名を指定する部分ですが、ラベルを変更することができます(わかりやすいものを記載しましょう)。
②アクションツール
ディレクトリツールをマクロ外部から制御します。
アクションタイプを選択
「値を更新」を指定します(既定値です)。
更新する値または属性
「Directory - Value="~~~"」を指定(選択)します。
③ディレクトリツール
「ディレクトリ」はフォルダ内のファイルリストを作成するツールです。今回は、アクションツール経由でコントロールパラメータの内容で書き換えています。
「ディレクトリ」はコントロールパラメーターで値を書き換えることになるため、ここで設定するディレクトリは適当なもので構いません。
「ファイル指定」、「サブディレクトリを含める」はそれぞれお好きなものを指定してください。
※ディレクトリツール自体の詳細は以下の記事を参照ください。
④セレクトツール
ディレクトリ読み込みではFullPathのみあれば十分なので不要な項目を消してしまいましょう。
⑤マクロアウトプットツール
設定不要です。
設定は以上となるので、好きな名前をつけて保存してください(yxmc形式で保存してください)。
マクロを使ったサンプルワークフロー
今回は、複数のディレクトリにファイルを保管していると想定しています。そのディレクトリのパスのリストをテキスト入力ツールなどで読み込むようにしています(もちろん、ExcelファイルやCSVファイルでリストとして作成しておき、ファイル入力ツールで読み込むことも可能です)。
実際に先程作成したマクロを利用したワークフローは以下のようになります。
①テキスト入力ツール
テキスト入力ツールに今回読み込みたいファイルが存在しているディレクトリをリストで作成しておきます。
②複数フォルダ入力マクロ
ディレクトリリスト(パス)のフィールドを指定します。
③動的入力ツール
動的入力ツールは、テンプレートを指定しておくことで、そのテンプレート通りの設定でファイルパスを動的に変更しながら複数のファイルを一気に読み込むことのできるツールです。
データ入力ソーステンプレート
実際に読み込むファイルをテンプレートとして指定します。
データソースのリストを読み込む
フィールドは、マクロから出力される「FullPath」がファイルのフルパスになりますので、これを選択します。
アクションは「ファイルパス全文を変更」を選択します。
なお、ダイナミックインプットの代わりに以前紹介したCSVを読み込むようなマクロでファイル読み込みを行うことも可能です。
まとめ
複数の置き場所(ディレクトリ)が設定されているようなファイルをディレクトリリストに基づいて一気に読み込む方法を紹介しました。
ワークフローの途中でファイルを保存して、保存したファイルをコピーしたりするような際にも活用できるかと思います。
保存したファイルのリスト作成など、応用の幅は広いと思います。
サンプルワークフロー
関連記事
※Alteryx Designer 2019.3.2.15763時点の内容となります