「レコード」タブ
RDBから取得したRecord形式のデータや、CSV形式やExcelファイルでの行単位のデータなど、 「レコード」を処理するためのコンポーネントは、パレットの「レコード」タブにまとめられています。ソートやジョイン(結合)、絞り込み、集計などを実行できます。
レコードを絞り込む(RecordFilterコンポーネント)
1. 対象のフローを表示し、「レコード」タブからRecordFilterコンポーネント(「条件によって入力レコードを絞り込みます」)をドラッグして配置する
2. インスペクタの「条件式」の「...」をクリックし、レコードを絞り込む条件を指定する
HINT
インデックスで絞り込むには
RecordFilterコンポーネントの「フィルタリングの条件」プロパティで、「条件式」の代わりに「インデックス」を選択すると、「読込み開始行」や「取出す件数」を指定して絞り込むことができます。
3. その他のコンポーネントを接続し、マッピングを設定する
4. RecordFilterコンポーネントの直後のマッパーで「一致した件数」や「一致しなかった件数」をマッピングし、出力できる
上の例では、商品番号フィールドの値にJM1を含むレコードを絞り込み、一致するレコードはCSVファイルへ出力、条件式と一致した件数、一致しなかった件数は画面に出力するフローを作成しています。
HINT
条件式は、レコード形式を評価するRQLの記述方法で指定します。「~=」は、右辺が文字列の場合に、「を含む」を指定する比較演算子です。
RecordFilterコンポーネントの「一致しないレコードも取り出す」プロパティで、条件に一致しないレコードの出力も指定できます。
レコードのジョインを実行する(RecordJoinコンポーネント)
1. 対象のフローを表示し、「レコード」タブからRecordJoinコンポーネント(「指定したキーで二つのレコードを結合します」)をドラッグして配置する
2. それぞれのコンポーネントを接続する
3. RecordJoinコンポーネントを選択し、処理に応じてインスペクタの各プロパティを設定する
HINT
RecordJoinコンポーネントで「入力キー」プロパティを設定する場合には、事前に入力ストリームを2つ接続しておく必要があります。
RecordJoinコンポーネントの「モード」プロパティで「RDB」を選択した場合は、「コネクション名」プロパティで接続先のコネクションも指定します。
4. インスペクタの「入力キー」タブをクリックし、ジョイン処理で使用される入力キーを設定する
5. RecordJoinコンポーネントアイコンをダブルクリックすると、「出力列の選択」ダイアログが表示されるので、出力対象のフィールド名にチェックマークを付け、「OK」をクリックする
「出力列の選択」ダイアログで出力フィールドを設定することで、出力ストリーム型やフィールド定義も指定できるようになります。必要に応じマッピングなども設定してフローを完成させます。
HINT
手順4では、JOINで使用されるキーを指定します。「入力キー1」に入力ストリーム1のキーとなるフィールドを指定し、「入力キー2」に入力ストリーム2のキーとなるフィールドを指定します。この指定により、「入力キー1 = 入力キー2」という条件でレコードのJOINが実行されます。入力キーは複数指定することが可能です。
「出力列の選択」ダイアログで出力フィールドを設定すると、RecordJoinコンポーネントの「出力キー」プロパティに表示されます。
レコードをソートする (RecordSortコンポーネント)
1. 対象のフローを表示し、「レコード」タブから RecordSortコンポーネント(「レコードをソートして出力します」)をドラッグして配置する
2. 各コンポーネントを接続し、RecordSortコンポーネントを選択して、インスペクタの各プロパティを設定する
CAUTION
大量のレコードを処理しようとすると実行時にエラーに なることがあります。
HINT
RDBデータの読み込み時にソートを指定するには
SQLビルダーを使うと、RDBデータの読み込み時にソートを指定し、ソートを実行した状態で結果ストリームを出力できます。指定するには、SQLビルダーの右欄にある「ソート」タブをクリックし、「フィールド名」の一覧から、ソート対象のフィールドを選択します。
3. インスペクタの「ソートキー」タブをクリックし、「キー名」からソート対象のキーを選択する
4. 必要に応じMapperコンポーネントでストリーム定義やマッピングを設定し、フローを完成させる
上の例では、RDBの結果ストリームから、「商品番号」をキーとして昇順にソートしたレコードを、CSVファイルとして出力しています。
HINT
「ソートキー」タブで「キー名」にキーを指定すると、「ソート順」に「昇順」が指定されます。降順にしたい場合は「ソート順」で「降順」を選択してください。
設定したソートキーを削除するには、「ソートキー」タブの一覧で行全体が選択された状態で右クリックし、メニューから「削除」を選択します。なお、ソートキーは複数指定できます。
インデックスを作成するプロパティを「はい」にすることで、パフォーマンスが大幅に向上する場合があります。
レコードをSQLで加工する (RecordSQLコンポーネント)
1. 「レコード」タブから RecordSQLコンポーネント(「レコードを仮想テーブルを使って SQLで加工します」)を配置し、各コンポーネントと接続する
2. RecordSQLコンポーネント「SQL 文」プロパティにSQL文を指定し、出力ストリームのストリーム型やフィールド定義を設定する
RecordSQLコンポーネントでは、入力ストリームのレコードを複数接続できます。
HINT
SQL文の指定方法
テーブル名は、入力ストリームの接続順に、in[1], in[2],...と指定します。また、フィールド名は、入力ストリームで定義されているFieldの順に、field[1], field[2],...と指定します。たとえば、1番目の入力ストリームの1番目のField と、2番目の入力ストリームの1番目の Fieldをキーにinner joinを行う場合は、「select in[1].field[1], in[1].field[2], in[1].field[3], in[2].field[2] from in[1] inner join in[2] on in[1].field[1] = in[2].field[1]」のように指定します。
レコードの行と列を入れ替える (RecordTransposeコンポーネント)
1. ファイル入出力のフローを作成し、「レコード」タブからRecordTransposeコンポーネント(「レコードの行と列を入れ替えます」)をドラッグして配置する
2. 各コンポーネントを接続し、RecordTransposeコンポーネントを選択して出力ストリームのストリーム定義を設定する
入出力のファイルを指定し、ストリーム定義を設定することで、行と列を入れ替えたファイルを出力できます。
CAUTION
対象のデータによっては出力ストリームのフィールド定義でデータ型をすべてString型にする必要があります。
レコードの値を集計する (RecordAggregateコンポーネント)
1. 対象のフローを表示し、「レコード」タブからRecordAggregateコンポーネント(「レコードを集計します」)をドラッグして配置する
2. 各コンポーネントを接続し、RecordAggregateコンポーネントを選択して、「キー項目」タブで「キーフィールド名」を指定する
3. 「集計項目」タブで、「出力フィールド名」の値欄をクリックし、出力フィールド名としたい文字列を入力する
HINT
指定可能な集計方法
RecordAggregateコンポーネントでは、合計、平均、最大値、最小値、個数、個数(重複を除く)の各集計方法を指定できます。
4. 「集計フィールド名」の一覧から集計対象のフィールドを選択し、「集計方法」の一覧から集計方法を選択する
5. マッピングウィンドウで出力ストリームのマッピングやストリーム定義を設定する
「キー項目」プロパティで指定したキーフィールドごとに、「集計項目」で指定したフィールドが集計され、出力されます。