Free Trial

ディスカッション

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

1つのファイルから作った複数ファイルに対して同じ集計処理をして別ファイルにするための最適なワークフローについて

aifumi
メテオール

件名のとおりのことをするにはどういったワークフローが適しているのでしょうか。

 

【目標】

作成される元ファイル(CSV)をとあるフィールド(例としてカテゴリフィールド)で分けて出力したファイルに

それぞれ集計を行ってエクセルファイルにする。

この作業は毎月発生し、カテゴリフィールドの値の種類数は毎月違うので

(なのでカテゴリ別に出力されるファイル数も毎月違う)、

できるだけ、このフローを自動化したい。

 

当初は

1)元ファイルからカテゴリ別にファイルを出力

2)1)で出力したファイルにバッチマクロ内で集計を行い、バッチマクロ内で出力する。

と2つのワークフローに分けるのが最適だと考えいたのですが、

 

alteryx 的には

1)と2)を同じバッチマクロで実行するのが普通なのでしょうか?

それともバッチマクロなど使わずにスタンダードマクロやそのほかのツールで可能な処理なのでしょうか。

 

アドバイスいただけると幸いです。

 

 

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

すでにワークフローができていて(しかも、それが結構複雑)ということであれば、バッチマクロ化する方が楽だと思います(バッチマクロを理解している前提ですが)。

 

内容にもよりますが、たいていの集計処理についてはWFの構築次第で同じ処理をさせて出力というのはバッチマクロでなくてもできるかと思います(それぞれのツールのグループ化オプションなどを利用)。ですので、Stepとして1で分割保存、2で処理とされてますが、通常のWFで1,2を一気通貫で処理することも可能です。

 

※最初に記載の通り単ファイル分の処理を複数ファイル分の処理に変更するのはなかなか骨が折れるかと思います

※各ファイルのスキーマが異なる場合はバッチマクロ一択かな、と思います

 

メモリ効率はバッチマクロの方が良いかと思います(一度に読み込むデータ量が減るため)

 

書いていて思ったのですが、バッチマクロ推奨している感じになりましたね・・・。

 

 

ちなみに、保存の際のデータ出力ツールの「フィールドからファイル/テーブル名を取得する」オプションはご存知でしょうか?

 

AkimasaKajitani_0-1605164996205.png

これを使えば一気にグルーピングして保存が可能ですので、これを使うことでわざわざバッチマクロ化しなくても一気に複数ファイルへの出力が可能です。

 

aifumi
メテオール

早速の返信ありがとうございます。

集計処理のためのワークフローはできていまして、

それを一つ一つのファイルに手動でワークフローを実行すれば、集計処理はできるのですが、さすがに100ファイルを同じワークフローとはいえ、100クリックするのは避けたい、と思ってバッチファイルがいいのではないかと思った次第です。

 

※最初に記載の通り単ファイル分の処理を複数ファイル分の処理に変更するのはなかなか骨が折れるかと思います

→やはりそうなのですね、、、

※各ファイルのスキーマが異なる場合はバッチマクロ一択かな、と思います

→スキーマ(データ構造のこといいでしょうか)はすべて同じです。

 

保存の際のデータ出力ツールの「フィールドからファイル/テーブル名を取得する」オプションは使っているのですが、出力はクロス集計表の形にするため、元データフィールドがなくなってしまうので、どうやってフィールドにファイル名をもたせるか、と考えているところです

Mizuno
アステロイド

ちょっとイメージがつかめなかったのですが

例えばですが、こんな感じです?

 

CSVがUPできなかったのでXlsxにしてますが、テスト.xlsxを読み込んで

カテゴリごとに、簡単な集計を行ってカテゴリごとに出力してます。

 

基本的にはマクロにしても、一つのWFにするにしても集計を行う時に

カテゴリごとにグループ化して集計を行い、出力を行えば可能と思います

バッチマクロで行う場合、マクロ入力をカテゴリでグループ化して行えば

可能です。

 

キャプチャ.PNG

 

aifumi
メテオール

返信ありがとうございます。

提示していただいたイメージです。

マクロを使わない方法もあるんですね。

たしかに、このようにカテゴリフィールドを集計時に残しておけば、分けられますね。

勉強になりました!ありがとうございます。