ASTERIA Warpのフローデザイナーで、指定したフィールドの値ごとにレコードをまとめ、異なるファイル分けてに出力する。

1つのファイルの中にあるCSVレコードを、指定したフィールドの同じ値ごとにレコードをまとめ、異なるファイルに分けて出力するフローを作成しました。(大量のCSVレコードを日付やIDごとに分ける用途を想定しています。)

使用するフロー

大まかな流れは、下図の説明を参照してください。

使用するCSVファイル

下図の読み込むCSVファイルにはCSVレコードが8つ存在し、今回は日付(フィールドDateの値)別に3つのファイルに分けられる想定になっています。

フローの解説

フローを先頭から解説します。

FileGet

ここでは使用するCSVファイル「testdata.csv」を読み込むだけなのですが、出力するファイルにも1行目に存在するフィールド名を入れたいので、ストリームタブの中にある「先頭行のフィールド名を出力」を「はい」にすることで出力することができます。
※読込み開始行が「2」になっていますが、この設定で出力されるファイルにも1行目のフィールド名の行が出力されます。

RecordGroup 

ここでレコードを日付ごとにグループ化します。プロパティのフィールド名をDateに設定することで、Dateの値(日付)ごとにレコードがグループ化されます。

マッパー

マッパーでは出力するファイル名を設定しています。RecordGroup でまとめたグループごとにループするので、今回は3つのファイルが作成され、ファイル名はそれぞれ「(Dateの値)の天気」になります。

FilePut

ここでは特に変わった設定は行っていません。プロパティのファイルパスは前のマッパーで設定した値である「Embed1」になっています。
また、ここまで「先頭行のフィールド名を出力」を「はい」にしているので、出力するファイルの先頭行にフィールド名の行が入ります。

フローの実行結果

レコードは日付で分けられたファイル3つにそれぞれ同じ日付のレコードが入っていることが確認できました。(画像をクリックで拡大表示します。)