TalendにてSQLでいうGroupByを使ったsumやmaxのような集計をするにはtAggregateRowを使います。
tAggregateRowを使用する
通常はデータベースなどから読み込んだデータを扱いますが、説明なのでランダムなデータをtRowGeneratorで生成します。今回は以下のような支店、日付、売上の3列があるデータを100万行ほど生成しています。tRowGeneratorの使い方はここでは割愛します。
データが用意できたので、集計用のコンポーネントtAggregateRowが変換処理内にあるので配置します。
配置したらtRowGeneratorを右クリックしロウ→メインでtRowGeneratorとtAggregateRowを接続します。
tAggregateRowの設定画面を開き、まずは同期カラムボタンをクリックし、tRowGeneratorが出力する項目をtAggregateRowに認識させます。
次に分類基準にはGroupByで指定するような項目を、操作にはsumのような集計関数で指定する項目を選択します。今回は支店ごとの売り上げの合計を出力するために以下の様に設定してみます。
最後に結果を確認するためにtLogRowを追加し、実行してみます。
実行結果です。100万行の集計が2.49秒で終わりました。少し主題からそれますが、結果に日付の列がnullと表示されていてみっともないのでスキーマを編集して、日付列の出力を削除してみます。
スキーマの編集
tAggregateRowの設定画面で...のボタンをクリックします。
右側のOutputにあるdateを削除します。
再度実行してみるとdateの列が消えています。