Free Trial

ディスカッション

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

読込むファイル月に応じて取得するフィールドを可変する-ref.セル結合された元データの列をフィールドに変換する

emimieux_al
アトム

以前、下記の投稿をした者です。

セル結合された元データの列をフィールドに変換する 

 

こちらの応用で、毎月データを貰ってデータベースを下に行を増やす形で更新していきたいのですが、

フォーマットが可変的なデータに対し、

当月 or 先月以前を認識して フィールド変換しつつ読み込むフィールド範囲を自動的に変えるワークフローを作りたいです。

 

◆データの列イメージ

最初の20列目まではいつも固定ですが、21列以降から

当月, 当月+1, 当月+2, 当月+3 ... 当月 +5か月先までの数値がセル結合されて入っています。

これが月が変わると、同じ列位置で別の月の数値が入っているデータを毎月貰うことになっていて、

例えば 1月のデータを貰うと 21列目から 1月… 6月まで、

    2月のデータを貰うと 21列目から 2月… 7月まで、入っています。

 

今月 (6月)のデータについては 当月 (6月)~+5か月先 (11月)までのデータを取得したいのですが、

先月以前 (5月以前) のデータについては 各当月だけのデータを取得したいです。

 

emimieux_al_2-1623209530188.png

 

◆最終的なアウトプットイメージ

最終的には、フィールド変換したのち、Transpose & CrossTabで 月と数値種類を縦持ちでデータベースを作りたいです。 

 

emimieux_al_4-1623209918060.png

詰まっているのは、

・filenameを生かして当月なら 全ての列を読み込む・先月以前なら21列目 そこらの当月分だけを読み込むようにする、

・列位置を月に応じて変える

の分岐の作成です。

 

何か良い方法があれば、教えていただけないでしょうか。。

どうぞよろしくお願いします。

 

 

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

@emimieux_al さん

 

各月のファイルは別々という前提となりますが、いわゆるスキーマ(カラム名等)が異なるファイルを読み込む場合は、バッチマクロでの処理が簡単かつ確実かつ楽ちんです。

1ファイル対応分を作り、バッチマクロ化すれば、あとはDesignerがよしなにやってくれます。

 

一気に複数ファイルをとりあえず読み込んで、、、ということをすると、おそらく相当複雑なWFかつ動的にやるのもかなり難しいのではないかと思います。

 

アップロード頂いたWFは1ファイル分としてはほぼ完成形でしたので、コントロールパラメータツール、アクションツール、マクロ出力を加えたくらいです。

AkimasaKajitani_1-1623244876909.png

 

このマクロをコントロールするのは、こちらのWFです。

フォルダ読み込みツールで指定したフォルダの拡張子「xlsx」のファイルのみファイルパスを取得。

マクロにパスを渡します。

このバッチマクロ内では、1ファイルずつ処理が行われますので、例えば3ファイル読み込めば、3ファイル分の処理した結果が取得できます。

AkimasaKajitani_0-1623244838521.png

 

ご確認ください。

なかなか最初はバッチマクロが理解しにくいところがあるので、ご不明点あれば何なりとご質問ください。

(サンプルファイルとしてyxzpに同梱されている1ファイルと、おまけで2ファイルアップロードしておきます)