Alteryx で動的にフォルダーを作る方法

2021.02.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

(For English, click here)

はじめに:

Alteryx では問題を解決する動的な方法が様々あります。データ分析後に取得した結果がフォルダー毎に整理するのが便利だと思います。そこで今回は動的にフォルダーを作成することをご紹介します。

動的にフォルダーを作成する方法:

1) “mkdir” コマンドの方法

フォルダを作成するためには、ある程度フォルダに名前を付ける方法を決める必要があります。フォルダー名が既存のデータフィールドより取得することが出来ます(例:客名、住所、id、ファイルタイプ、など)あるいは、変数を活躍して決めることが出来ます(例:ファイルパス、システム日付、タイムスタンプ、など)。今回は分かりやすく説明するために日付をフォルダー名として使用します。

例えば以下のようなデータフィールドに日付型のデータが保存された際に、各日付毎にフォルダーを作成することを目標とします。

はじめに、フォーミュラツールを加えてコマンドのシンタックスを作成します。以下のように “mkdir” コマンドを加えて新しい列を作成します。

その次は、セレクトツールを使用しコマンド以外のフィールドを消去します。そして最後に、開発者カテゴリーのコマンド実行ツールを加えて以下のように設定します。

コマンド実行ツールでは外部ファイルやコマンドを実行することが出来ます。そのためにまずは出力のオプション下ではバッチファイルを名前つけて保存するようにして、このバッチファイルのファイル形式が CSV として選んでいただき、外部プログラムを実行するためにこのファイルをコマンドとして呼び出します。

このワークフローを実行することで、もし出力ディレクトリーに対象とするフォルダーが既に存在していればそのフォルダーの作成がスキップされ(上書きではなくスキップ)対象とするフォルダーが存在してない際にのみ新たなフォルダーが作成されます。

* 注意: この方法で、もしデータフィールドに(フォルダー名を取得する列のデータに)スペースや特殊文字などがいればフォルダー名が短縮されます。“mkdir” コマンド実行する際にスペースや特殊文字の認識がされないために、特殊文字などの文字が無視されることがあります。また、スペースがあった際にスペースの後の文書が全て無視され、スペースまでの文字がフォルダー名となります。このために、もし出力フォルダー名にスペースや特殊文字が希望する方は次に説明するマクロの方法を使用することがおススメします。

2) バッチマクロ使用した方法

このマクロの方法で動的な新規フォルダーを作成する際にそのフォルダー名に含まれるスペースや特殊文字が問題なく出力することが出来ます。特殊文字とは以下に示した文字のことです。

ウィンドウズではフォルダー名にどうしても使えない特殊文字があるのでそれらの特殊文字はこのマクロの限界とされます。

この情報をベースにしてバッチマクロを作りましょう。スペース、特殊文字、英数字を含まれるデータを活用し動的にフォルダーを作ります。フォルダー名がこの列から取得し行ごとに一つなフォルダーの作成を目標とします。

最初にフォーミュラツールを加えて目的なディレクトリーを決めてフルパスを作ります。

その次は、セレクトツールを使ってフルパスのこの “Folder” フィールドのみを選択します。以下の手順でバッチマクロを作成します。

バッチマクロでは テキスト入力ツールを使用し “Folder” という列に仮のデータは入力します。その次にコマンド実行ツールを加えてツールの設定では ”出力” 項目には一時的に保存するファイル名を指定します。Alteryx では外部のプログラムを呼び出して実行することが出来ますそのためにここは ”コマンド” 項目では “cmd.exe” を入力します。コマンド引数はコマンド実行する際に必要とする入力項目です ”コマンド引数” としてコントロールパラメーターと “Folder” を入力します。そしてこのマクロにコントロールパラメーターツールを加えて目的の列名である “Folder” を指定します。

ワークフローの設定で ”ワークフロー” タブをクリックします。バッチマクロとして登録されていることを確認し、定数のオプション下で “タイプ” の Question の部分には “ControlParam.Folder” の記載を確認しその値はディレクトリーを指定します (今回は c:\temp)。

このマクロは名前つけて保存して終了します。元のワークフローに戻って上記に作成したマクロを挿入します。マクロの質問では “Folder (V_WString)” を選びます。これでワークフローが完成しました。

このワークフローを実行したら以下のようにフォルダーが新規で作成されます。

* 注意: このワークフローが実行する度に新規フォルダーの作り方に条件があります。目的のディレクトリーには同名で既存のフォルダーが無い場合に限り新規でフォルダーが作成されます。もし既に同名のフォルダーが存在していればそのフォルダーの作成をスキップされ(フォルダーの上書きではなくスキップ)、残りのフォルダーが新規で作成されます。全てのフォルダーが既に同名で存在していればエラーが発生しこのワークフローが失敗されフォルダーの作成が失敗となります。

まとめ:

Alteryx で動的にフォルダーを作ることがエンドユーザーの悩みに答えます。特にフォルダー名がデータより取得したい時に手作業の手間が減らせます。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400