RecordGroup - レコードをグループ分けします
入力ストリームのレコード(Record, CSV, FixedLength)を
フィールド名で指定したフィールドが同じ値を持つレコードにグループ分けします。そして、そのグループごとにループして出力します。
■ストリーム情報
入力 | フォーマット | Record,CSV,FixedLength |
接続数 | 1 |
出力 | フォーマット | Record,CSV,FixedLength |
説明 | 入力ストリームをグループごとに出力します。 |
■コンポーネントプロパティ
名前 | プロパティ型 | マッピング | 説明 |
モード | choice | - |
処理を行う方法を指定します。
オンメモリを指定した場合はFlowServiceのメモリを使用して処理を行うのでパフォーマンスが上がります。
RDBを指定した場合はオンメモリと比べて大量のレコードを処理することができます。
オンメモリ [OnMemory]
| - | オンメモリで処理を行います。
|
RDB [RDB]
| - | コネクション名 で指定されたRDBを使用して処理を行います。
|
|
コネクション名 | connection | - |
接続先のRDBを指定します。
コネクションペインまたは管理コンソールにて作成されたRDB接続名を選択します。
サポートされるRDBはHSQLDBです。
接続先のRDBとしてInternalDataStorageを使用することができます。
ただし、このコンポーネント以外ではInternalDataStorageは使用しないでください。
|
フィールド名 | inputField | 入力&出力 |
フィールド名を指定します。
このプロパティで指定したフィールドが同じ値を持つレコードにグループ分けします。
このプロパティはソートキーとしても使用します。
|
ソート順 | choice | 入力&出力 |
グループ分けされたレコードの出力順を昇順にするか降順にするかを指定します。
入力ストリームのフィールド名で指定したフィールドをソートキーとして使用します。
指定したフィールドにnullが含まれている場合には、そのレコードの順番はNullの順番で指定することができます。
昇順 [asc]
| - | グループ分けされたレコードを昇順で出力します
|
降順 [desc]
| - | グループ分けされたレコードを降順で出力します
|
|
Nullの順番 | choice | 入力&出力 | フィールド名で指定したフィールドの値がnullだった場合に、そのレコードの順番を最初にするか最後にするかを指定します。
最初 [first]
| - | フィールド名で指定したフィールドの値がnullのレコードを最初にします
|
最後 [last]
| - | フィールド名で指定したフィールドの値がnullのレコードを最後にします
|
|
精度 | int | - |
フィールドの型がDecimalの場合に精度を指定します。
|
小数点以下の桁数 | int | - |
フィールドの型がDecimalの場合に小数点以下の桁数を指定します。
|
末尾の0を削除 | boolean | - |
フィールドの型がDecimalの場合に小数点以下の末尾の0を切り捨てるかどうかを指定します。
はい [true]
| - | 小数点以下の末尾の0を切り捨てて出力します。
|
いいえ [false]
| - | 小数点以下の末尾の0を切り捨てずに出力します。
|
|
インデックスを作成する | boolean | - | フィールド名 に対してインデックスを作成するかどうかを指定します。
インデックスを作成することによってパフォーマンスが大幅に向上する場合があります。
はい [true]
| - | インデックスを作成します。
|
いいえ [false]
| - | インデックスを作成しません。
|
|
■ループ処理
このコンポーネントがループの起点となってグループに分けたレコードが出力されます。
■トランザクション処理
コミット | 何もしません。 |
ロールバック | 何もしません。 |
■エラー処理
タイプ | パラメーター | エラー処理フロー へのストリーム | エラー コード | 説明 |
汎用 |
なし
| コンポーネントの入力ストリーム | 1 | モード プロパティが「RDB」のときにHSQLDB以外のデータベースが設定された場合 |
3 | モード プロパティが「RDB」のときにコネクション名に値が設定されていない場合 |
4 | 入力ストリームのフィールド定義が存在しなかった場合 |
8 | フィールド名で指定したフィールドが入力ストリームに存在しなかった場合 |
レコードが無い |
なし
| コンポーネントの入力ストリーム | 2 | 出力ストリームのレコードが0件の場合 |
■制限事項
- 大量のレコードを処理しようとすると実行時にメモリ不足でエラーになることがあります。
- 出力ストリーム定義(CSV, FixedLength)には入力ストリーム定義がそのまま使用されますが、読込み開始行プロパティの値は無視されて1が設定されます。よって各ループでの出力ストリームは1行目から出力されます。
-
モード プロパティが「RDB」の場合に、コネクション名 プロパティでInternalDataStorageを指定した場合、InternalDataStorageの使用可能最大メモリサイズはJavaのデフォルト値となっていて、個別に指定することはできません。Javaのデフォルト値は搭載されている物理メモリの1/4のメモリサイズです。
■実行例
入力ストリームのレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
顧客 | 商品名 |
会社A | 商品1 |
会社B | 商品1 |
会社C | 商品2 |
会社A | 商品3 |
会社B | 商品2 |
会社A | 商品2 |
プロパティを以下のように設定します。
プロパティ名 | 値 | 説明 |
フィールド名 | 顧客 | グループ分けで使用するフィールド名 |
ソート順 | 昇順 | グループ分けされたレコードの順番 |
出力ストリームは以下のようになります。
1ループ目
顧客 | 商品名 |
会社A | 商品1 |
会社A | 商品3 |
会社A | 商品2 |
2ループ目
3ループ目