Alteryx Designerで動的なディレクトリにデータを出力する #Alteryx

データの出力先のディレクトリを動的に作成する方法をご紹介します。
2023.04.22

こんにちは、スズです。

Alteryxで作成したデータをファイルに出力する場合、データ出力ツールで出力先のディレクトリを指定します。データ出力ツールではファイルパスを動的に変更できますが、新規にディレクトリを作成することはできないため、出力先のディレクトリは既に存在している必要があります。出力先のディレクトリを新規に作成して設定したい場合、別途ディレクトリを作成する処理が必要となります。本記事では、ワークフローの処理の中で新規にディレクトリを作成し、データの出力を行う方法をご紹介します。

ワークフロー概要

今回ご紹介するワークフローの全体像は以下のようになっています。

ここからは、動的なディレクトリの作成と、作成したディレクトリへのデータの出力に分けてご紹介していきます。

ワークフローの詳細

動的なディレクトリの作成

動的なディレクトリの作成は、以下の赤枠部分の処理で行います。

処理の概要は以下の通りです。

  1. 現在日時ツールで本日の日時を取得
  2. フォーミュラツールでコマンドを作成
  3. セレクトツールで不要な列の削除
  4. コマンド実行ツールでバッチファイルの実行

現在日時ツールの処理

今回のワークフローでは、作成するディレクトリの名前としてワークフローを実行した日付を使用します。ワークフローを実行した日付の取得のため、現在日時ツールを使用しています。

フォーミュラツールの処理

フォーミュラツールでは、ディレクトリを作成するためのコマンドを値に用意します。この後のコマンド実行ツールで実行するコマンドとなります。ここでは、以下のような値を用意しました。コマンドの意味としては、もしディレクトリが存在しない場合は、ディレクトリを新規に作成するというものです。

'if not exist "D:\' + [DateTimeNow] + '"' + ' mkdir "D:\' + [DateTimeNow] + '"'

セレクトツールの処理

この後のコマンド実行ツールでは、実行するコマンドの値のみ必要となります。コマンド以外が入っている列は不要となりますので、セレクトツールで不要な列を削除します。

この時点でデータは以下のようになっています。

コマンド時刻ツールの処理

コマンド実行ツールでは、フォルダを作成するコマンドを実行します。コマンドを実行するためにあらかじめバッチファイルを用意しておきます。コマンド実行ツールで受け取ったデータがバッチファイルに出力されますので、用意するバッチファイルの中身は空の状態で問題ありません。コマンド実行ツールの設定としては、[ソースの書き込み]、[コマンド]、[結果の読み取り]に、同じバッチファイルを指定します。

設定は以下のようになっています。Dドライブ配下にバッチファイルを用意し、それぞれの項目にバッチファイルを指定します。

これで動的なディレクトリの作成の処理は完了です。

作成したディレクトリにデータの出力

ここからは作成したディレクトリにデータを出力します。データの出力の処理は以下の赤枠部分となります。出力するデータについては、テキスト入力ツールで用意したサンプルデータを使用します。

処理の概要は以下の通りです。

  1. フィールド付加ツールでデータを結合
  2. フォーミュラツールでファイルパスを作成
  3. セレクトツールで不要な列を削除
  4. データ出力ツールでファイルを出力

フィールド付加ツールの処理

コマンド実行ツールは[結果の読み取り]にバッチファイルを指定していますので、バッチファイル内のコマンド(ディレクトリの作成に使用したコマンド)がデータに入っています。フィールド付加ツールを使ってファイルに出力するデータとコマンド実行ツールの結果を1つにまとめます。

フォーミュラツールの処理

この後のデータ出力ツールで使用するファイルパスを、フォーミュラツールで作成します。ファイルパスは、前の処理で作成したディレクトリを指定するほか、ファイル名と拡張子も用意します。コマンド実行ツールで実行したコマンドには作成したディレクトリまでのパスが含まれていますので、この値を使ってファイルの出力先を作成します。ここでは以下の式を記述しています。

Substring([Field_1],FindString([Field_1], '"') + 1 ,11) + "\" + <ファイル名になる値が入っている列> + ".<拡張子>"

この時点でデータは以下のようになっています。

セレクトツールの処理

今回作成したワークフローでは、フォーミュラツールで新規に列を作成してファイルパスを作成しています。コマンド実行ツールで実行したコマンドが入っている列は不要となりますので、セレクトツールで削除します。

データ出力ツールの処理

データ出力ツールでデータをファイルに出力します。[フィールドからファイル/テーブル名を取得する]を有効にし、[ファイルパス全体を変更する]を選択、[ファイルまたはファイル名の一部を含むフィールド]にフォーミュラツールで作成したファイルパスを選択します。

設定は以下のようになっています。

ワークフローの実行して出力先を確認すると、新規にディレクトリが作成され、そのディレクトリにファイルが作成されています。

最後に

Alteryx Designerで動的なディレクトリを作成し、ファイルにデータを出力する方法についてご紹介しました。