質問
3つのCSVファイルにある特定の列の数値をキーごとに集計して新たなCSVファイルに出力したいです。
具体的な実装方法を教えてください。
回答
■前提
入力元の CSV ファイル A~C、ならびに出力先 CSV ファイル D のイメージは以下の通りです。
◎入力元「CSV A」の内容
商品名,数量
りんご,10
バナナ,20
◎入力元「CSV B」の内容
商品名,数量
バナナ,15
りんご,30
◎入力元「CSV C」の内容
商品名,数量
りんご,21
◎出力先「CSV D」のイメージ 上記 A~C の「数量」を「商品名」単位で集計
商品名,数量
りんご,61
バナナ,35
■スクリプトイメージ
■各処理の説明
①CSV ファイル A・B・C を読み込んで、全レコードを一時ファイル「CSV_Temp.csv」に出力します
なお、「CSV A」を「CSV_Temp.csv」へ出力する際の「書き込み設定」は「上書き」と「1行目に列名を挿入」にチェックを、
「CSV B」と「CSV C」の「CSV_Temp.csv」出力については「書き込み設定」の全てにチェックを入れます。
※Aの時点では新規に Temp ファイルを用意するため、B と C では Temp ファイルにレコードを追加書き込みするため
②「集計処理」コンポーネントを配置し、「CSV_Temp.csv」の内容を集計して「CSV D」へ出力します
「集計処理」コンポーネントは、ツールパレットの(変換 - 基本 - 集計)にあります。
集計処理のプロパティを開き、「必須設定」タブの「グループキー設定」を追加し、「商品名」を選択します。
これにより、「商品名」が同一のものをグルーピングし、グループ単位での集計が可能となります。
「集計設定」タブの「集計対象設定」を追加し、列名に「数量」を、関数に「合計値」を選択します。
「出力設定」タブの「出力を手動で設定」にチェックを入れ、「CSV D」に出力する項目を設定します。
「出力対象設定」を追加し、「商品名」と「数量の合計値」を選択します。
これにより、「商品名」毎の「数量」の合計値が「CSV D」に出力されます。
※「CSV D」と項目数と項目順が一致する場合は、このまま「CSV D」の出力処理へリンク可能です
「CSV D」と項目数や項目順が異なる場合は、「CSV D」出力処理との間に Mapping を配置してください
■実行結果
「CSV D」に商品毎の合計数量が出力されます。
コメント
0件のコメント
記事コメントは受け付けていません。