Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

日々処理したファイルをフォルダ移動させ1つのファイルを作成したい

Marumouke
メテオール

Alteryx初心者です。

初めて投稿させていただきます。

 

とあるフォルダにCSVが日々生成されます。CSVの中身はフィールド名は同じでもファイルごとに行数が異なります。
1ファイル読み込み、加工し、加工が済んだものは別フォルダへ移動させます。
フォルダ内のファイルを同様に加工し、最終的に一つのファイルにまとめたいです。
※日々生成されるファイルは1つの日もあれば複数ファイル生成される日もあります。

新しく追加されたファイルにも繰り返し、同じ加工をします。

すでに一つになっているファイルと、まとめます。

最終的に出来上がるファイル数は一つです。

 

どのようなワークフローを作成するのが良いでしょうか。

12件の返信12
AkimasaKajitani
17 - Castor
17 - Castor

@Marumouke さん

 

お初にお目にかかります。

ちなみに、今回のお話はなかなか重めの話題となります・・・。

 

少々高度なワークフローになるかと思いますが、実現は可能です。
各ポイントを分けて考えてみたいと思います。

 

1.メインとなるCSVファイルの読み込みはワイルドカード指定で読み込んでも良いですし、ディレクトリツールを使っても良いです(レコード数の変化は特に問題ありません)

 

こちらのナレッジベースが参考になると思います。
https://community.alteryx.com/t5/%E3%83%8A%E3%83%AC%E3%83%83%E3%82%B8%E3%83%99%E3%82%B9-%E6%97%A5%E6...

 

もしくは弊社ブログにも記事をあげています。
https://newssdx.kcme.jp/alteryxtips-multiple_csv_input/

 

 

2.ファイルの移動はコマンドラインツールを使ってバッチファイルによりファイルを移動させます。

 

英語のコミュニティですが、こちらが参考になるかと思います。
https://community.alteryx.com/t5/Alteryx-Designer-Discussions/Configure-Run-Command-tool-to-move-a-f...

 

 

3.過去に一つにしたファイルとまとめるのであれば、過去ファイルの結果を読み込む必要があります。基本的には過去ファイルを読み込んでユニオンすればオッケーです。

 

ただ、どこにどのように貯めていくか、ということは考えておく必要があります。

 

 

例ですが、
1.WF直下に前回までの結果を本番の出力とは別にyxdb形式などで保存しておき、WFを実行するたびに前回の結果を自動的に読み込んで、保存し直す
2.前回の結果フォルダみたいなものを作っておき、WF実行前に自分で前回までの結合された結果を保存する
などでしょうか。

 

ワークフロー作成の際、わかりやすさ重視なのか、なるべく自動化することを重視するのかでやり方は若干変わると思います。

 

なお、同じWF内であるファイルを読み込んでその読み込んだファイルに上書きするような場合は完了までブロックツールなどを間に挟むようにして下さい。

 

おそらくご不明点がたくさんでてくると思いますので、都度質問いただければと思います。

 

Marumouke
メテオール

@AkimasaKajitani さん

早速の回答ありがとうございます。

 

追加で質問させていただきます。

取り込むcsvファイルなのですが、ヘッダがついており、このヘッダからフィールドに付加したい項目もあるので、形を整えたあとでないと、複数のファイルを一度に読み込めないようなのですが。この処理をフォルダにあるファイル全てに行ったあとでなら、教えていただいた処理にすすめますでしょうか?
また一つ一つのファイルの形の整えるの部分はできているのですが、フォルダに複数存在しているcsvファイルにこの処理をする部分がうまくつくることができていません。 順番が相前後しますが、良い方法があったらご教示いただけますでしょうか。


ワークフロー作成の際、わかりやすさ重視なのか、なるべく自動化することを重視するのかでやり方は若干変わると思います。

アウトプットのイメージは出来ているのですが、中のワークフローをどう作ったら思い通りのものが出来上がるか苦戦しております。
AkimasaKajitani
17 - Castor
17 - Castor

@Marumouke さん

 

ファイル1つ分の処理ができているのであれば、バッチマクロ化するのが一番簡単です。

 

バッチマクロ化については、最初に回答したところの弊社ブログの

https://newssdx.kcme.jp/alteryxtips-multiple_csv_input/

の一番最後のディレクトリツールとマクロ化の手順で可能です。

※要は、ファイルのパスをバッチマクロ内に設置したコントロールパラメータツールで書き換える形になります

 ファイルパスのリストは、ディレクトリツールで取得可能です

 

他にも、インタラクティブレッスンのマクロの解説のところでもやり方を知ることができると思います。

 

まずは読み込みの部分について解決していただければ・・・。

 

Marumouke
メテオール

ご回答ありがとうございます!!!

 

度々の質問となり、恐縮ですが、取り込むCSVはヘッダーがあり、2行目がフィールド行、3行目以降がデータという順番で入っており、

ファイルの加工としては、ヘッダーを2行目の項目に付加し(ヘッダー行は削除)します。

ヘッダーの情報は不可した2行目の項目のデータにいれます。(同じ値が3行目以降に入っているデータになる。)

その後、1つのファイルにしようとしています。

 

マクロを組んでみたところ、最初のファイルはうまく処理できているのですが、2つ目以降のファイルの処理がうまくいきません。

AkimasaKajitani
17 - Castor
17 - Castor

@Marumouke さん

 

マクロを呼び出す側のワークフローにて、マクロの後に閲覧ツールなど接続されていますか?

マクロの出力アンカーに何も接続されていないと、最初のレコードしか繰り返しませんのでご注意下さい。

 

できれば、WFのスクショなどあるとアドバイスしやすいです・・・。

 

Marumouke
メテオール

ありがとうございます。

現時点で作成したWFを添付してみます。

①.jpg

②.jpg

③.jpg

④.jpg

⑤.jpg

1枚目:ヘッダーを取ったり、統一したフォーマットにするための処理    

2枚目:3枚目の複数ファイル読み込みマクロを読み込んで、1枚目のフォーマットの標準マクロに渡しています。    

4枚目:1つのファイルの処理、入力ツール~フォーマットして出力するまでを一つのマクロにしてみました。    

5枚目:4枚目でつくったマクロを読み込んでディレクトリツールに接続してます。
    5枚目の下の出力は同じヘッダ行を20回出力しています。一番最初のファイルのみを20回処理しているようです。

出力結果は、やはり最初のファイルだけを処理しているようです。

AkimasaKajitani
17 - Castor
17 - Castor

@Marumouke さん

 

WFのスクショありがとうございます。

 

思い当たるフシとして、コントロールパラメータツールからアクションツールを通じてファイル入力ツールのファイルのパスを書き換えていると思うのですが、その書き換えがうまくいっていないのではないかと思います(そのせいで、現状ファイル入力ツールに設定されているファイルを何度も読んでいるのではないかと想定しています)。

 

以下のような感じにアクションツール設定されてますでしょうか?

AkimasaKajitani_0-1631714646933.png

※特定の文字列を置換にチェックが入っている場合は、置換しようとしているパスが現状マクロのファイル入力ツールで指定しているパスと一致しているかどうか確認願います

※CSVファイルの想定です(Excelファイルなどですと、若干やり方が変わります)

Marumouke
メテオール

アドバイス頂いた設定と、緑色のギザギザのマクロ(5名目の画像)の設定をフルパスに設定し直したら各ファイルごとに処理できるようになりました。

ありがとうございます。

とりあえずここまではできたましたが、本題の方でまたわからないことがあったら質問させていただけますでしょうか。

AkimasaKajitani
17 - Castor
17 - Castor

@Marumouke さん

 

はい、いつでもご質問いただければと思います。

できれば1つの課題で1つの話題、と分けていただいた方が良いと思います。

(分割される場合は一旦こちらはCloseにして頂いた方が良いかと思います)