Alteryxで出力ファイルをZIPファイルにバッチファイルを使って圧縮する方法
Alteryxは標準で出力ファイルをZIP形式にまとめる機能がありません。基本的にはコマンド実行ツールを使って外部ツールで実現することになります。別の記事では直接コマンド実行ツールに設定を書き込む方法についてご紹介しましたが、今回はバッチファイルで行う方法をご紹介します。
おさらい
- Alteryxで出力ファイルをZIPファイルにまとめて圧縮する場合は、コマンド実行ツールで外部ツールを使う
- 外部ツールは7zipなどを使う方法が有名ですが、Windows標準機能のPowerShellでCompressArchiveコマンドを使う方法がある
- フォルダ構成は以下のイメージ
バッチファイルで行う方法
前提として、前回のバッチファイルを使わないケースを読んでおいていただけると幸いです。
前回からの変更すべきポイントとしては、以下の部分です。
この変更ポイントで行う内容は以下のとおりです。
- フォーミュラツールでバッチファイルを作成する
- セレクトツールで不要な項目を削除
- フォーミュラツールで作成したバッチファイルの中身をコマンド実行ツールで書き出し、実行
1.フォーミュラツールでバッチファイルを作成する
まず、フォーミュラツール内にバッチファイル用の設定を書き込みます。
ここでは、圧縮ファイル作成からファイル削除までの手順をそのまま記載しています。以下のような形です。これは、zipフォルダの内容を、output.zipというファイルに圧縮するという内容になっています。
2行目は、zipファイルにあるフォルダを削除するコマンドです。
"powershell compress-archive -Force zip output
del /Q zip\"
なお、outputという文字列のあとに改行を入れています。改行は「\n」などで表記せず、そのまま改行を入れてください(ダブルクオテーション内の改行はそのまま改行として認識されます)。他にもファイルをコピーしたりといったバッチファイル内でやりたいことがあれば、ここに記載します。
2.セレクトツールで不要な項目を削除
セレクトツールでは、バッチファイル用のコマンドが入った項目だけ残して残りはチェックを外します。
3.フォーミュラツールで作成したバッチファイルの中身をコマンド実行ツールで書き出し、実行
コマンド実行ツールの設定は、書き出し部分が若干複雑になっています(CSV設定でバッチファイルを書き出すため)。
なお、すべて相対パスにしていますが、事前にワークフローを保存しておいてください。
- ソースの書き込み
- 後ほどご紹介します
- 外部プログラムを実行
- ソースの書き込みの部分で指定したファイルをそのまま記載します
ソースの書き込み設定は以下のとおりです。
一旦CSVファイルとしてファイルの書き込み先を指定してください。ただ、実際のファイル名は拡張子「bat」にする必要があります。
- ファイル形式
- CSV
- 区切り記号
- なしにします
- 先頭行にフィールド名を含める
- チェックを外す
- 出力フィールドを引用
- 「常に非表示」にする
- コードページ
- コマンドの内容が日本語を含まない場合は「ISO-8859-1 ラテン語-I」でも構いませんが、「日本語Shift-JIS」が無難です
なお、バッチファイルを動的に変更する必要がなければ、ワークフローのイベント機能を使うことで、ワークフロー完了時に圧縮用のバッチファイルを起動するということも可能です。
まとめ
- Windows標準のPowerShellを使ってZip圧縮する際に、バッチファイルを用いて複雑な制御をする方法をご紹介しました
サンプルワークフロー
SampleWF_バッチファイル利用 fa-download
※Alteryx Designer バージョン2021.4.1.04899時点の情報です