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つにそれぞれ同じ日付のレコードが入っていることが確認できました。(画像をクリックで拡大表示します。)