RecordJoin - レコードのJOIN

入力ストリーム1のレコード(Record, CSV, FixedLength)と入力ストリーム2のレコード(Record, CSV, FixedLength)を指定されたキーによりJOINして取得します。

(注1)入力ストリーム1、2の番号1、2は、フローデザイナーで本コンポーネントをクリックしたときに表示される入力線の番号と対応付けされます。入力順序を変更するには、本コンポーネントを右クリックして表示されるメニューから「入力順序の並べ替え」をクリックし、表示された「入力順序の並べ替え」ダイアログボックスのリスト右に表示されている矢印をクリックします。

(注2)入力キー プロパティを設定する場合には、事前に入力ストリームを2つ接続してください。また、プロパティを設定した後に、上記の「入力順序の並べ替え」を行った場合には、再度入力キー プロパティと出力フィールド プロパティを設定しなおしてください。

■ストリーム情報

入力フォーマットRecord,CSV,FixedLength
接続数2
出力フォーマットRecord,CSV,FixedLength
説明JOINしたレコードが出力されます

■コンポーネントプロパティ

名前プロパティ型マッピング説明
モードchoice- 処理を行う方法を指定します。 オンメモリを指定した場合はFlowServiceのメモリを使用して処理を行うのでパフォーマンスが上がります。 RDBを指定した場合はオンメモリと比べて大量のレコードを処理することができます。
オンメモリ [OnMemory] - オンメモリで処理を行います。
RDB [RDB] - コネクション名 で指定されたRDBを使用して処理を行います。
コネクション名connection- 接続先のRDBを指定します。 コネクションペインまたは管理コンソールにて作成されたRDB接続名を選択します。 サポートされるRDBはHSQLDBです。
接続先のRDBとしてInternalDataStorageを使用することができます。 ただし、このコンポーネント以外ではInternalDataStorageは使用しないでください。
JOIN処理choice- 入力ストリームのレコードをどのように結合するかを指定します。
INNER JOIN [inner]
inner joinを使用します。
LEFT OUTER JOIN [outer]
left outer joinを使用します。
RIGHT OUTER JOIN [rightOuterJoin]
right outer joinを使用します。
FULL OUTER JOIN [fullOuterJoin]
full outer joinを使用します。
ループを開始loopProcess- 結果セットをまとめて出力するか1レコードずつループして出力するか選択します。
はい [true] - ループの起点となって1レコード(行)ずつストリームに出力されます。
いいえ [false] - すべてのレコード(行)がまとめてストリームに出力されます。
精度int-va フィールドの型がDecimalの場合に精度を指定します。
小数点以下の桁数int- フィールドの型がDecimalの場合に小数点以下の桁数を指定します。
末尾の0を削除boolean- フィールドの型がDecimalの場合に小数点以下の末尾の0を切り捨てるかどうかを指定します。
はい [true] - 小数点以下の末尾の0を切り捨てて出力します。
いいえ [false] - 小数点以下の末尾の0を切り捨てずに出力します。
インデックスを作成するboolean-入力キー に対してインデックスを作成するかどうかを指定します。
インデックスを作成することによってパフォーマンスが大幅に向上する場合があります。
はい [true] - インデックスを作成します。
いいえ [false] - インデックスを作成しません。
入力キーcategory- JOINで使用されるキーを指定します。
入力キー1に入力ストリーム1のキーとなるフィールドを指定し、入力キー2に入力ストリーム2のキーとなるフィールドを指定します。
各入力ストリームのフィールドが「前に接続しているコンポーネント名.入力フィールド名」の形式でドロップダウンリストで表示され、キーを選択できるようになっています。この指定により、入力キー1 = 入力キー2 という条件でレコードをJOINします。
入力キーは複数指定することができます。一番下の空いたフィールドをクリックして追加します。キーを複数指定した場合はand条件となります。
出力フィールドcategory- 取得対象に指定したフィールドが表示されます。
取得するフィールドを指定するには、本コンポーネントをダブルクリックして表示される「出力列の選択」ダイアログボックスで選択します。詳しくは、下記トピック「出力列の選択」を参照してください。

■ループ処理

ループを開始 プロパティが「はい」の場合、このコンポーネントがループの起点となって処理されたレコードは1レコードずつ出力されます。

■トランザクション処理

コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム1コネクション名に指定した接続先のRDBがHSQLDBでない場合
3コネクション名に値が設定されていない場合
4入力ストリームが2つなかった場合
51番目の入力ストリームのフィールド定義が存在しない場合
62番目の入力ストリームのフィールド定義が存在しない場合
7出力ストリームのフィールド定義が存在しない場合
8出力ストリームのフィールドが、入力ストリームのフィールドに存在しなかった場合
9入力キーが設定されていなかった場合
10入力キーが入力ストリームのフィールド定義に存在しなかった場合
レコードが無い なし コンポーネントの入力ストリーム2出力ストリームのレコードが0件の場合

■制限事項

■出力列の選択

JOINして取得したいフィールドを指定するには、本コンポーネントをダブルクリックして表示される「出力列の選択」ダイアログボックスを使います。
「出力列の選択」ダイアログボックスでは、入力ストリーム1、入力ストリーム2のフィールドがそれぞれin[1].フィールド名、in[2].フィールド名の形式で一覧表示されます。一覧で、出力したいフィールドのチェックボックスをオンにして「OK」ボタンをクリックすると取得対象になり、出力フィールド プロパティに表示されます。
入力ストリームごとにすべてのフィールドを出力、または出力解除したい場合は「すべて選択」「すべて解除」ボタンをクリックします。
出力フィールド名は出力ストリームのフィールド名になります。出力フィールド名は変更可能で、フィールドをクリックすると編集することができます。入力フィールド名は表示のみです。

■JOIN処理=INNER JOINの例

入力ストリーム1のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
empidnamedeptid
1aaa2
2bbb3
3ccc1

入力ストリーム2のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
deptidname
1dev
2sales

プロパティを以下のように設定します。
プロパティ名説明
JOIN処理INNER JOINinner joinでレコードをJOINします
入力キー入力キー1xxxx.deptidxxxx は入力ストリーム1のコンポーネント名
入力キー2yyyy.deptidyyyy は入力ストリーム2のコンポーネント名
出力フィールドempid入力フィールド名 in[1].empid
name入力フィールド名 in[1].name
name_2入力フィールド名 in[2].name

出力ストリームは以下のようになります。
empidnamename_2
1aaasales
3cccdev

JOIN処理 が「INNER JOIN」の場合、入力ストリーム1のdeptidと入力ストリーム2のdeptidが等しいレコードのみ出力されます。

■JOIN処理=LEFT OUTERの例

入力ストリーム1のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
empidnamedeptid
1aaa2
2bbb3
3ccc1

入力ストリーム2のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
deptidname
1dev
2sales

プロパティを以下のように設定します。
プロパティ名説明
JOIN処理LEFT OUTER JOINouter joinでレコードをJOINします
入力キー入力キー1xxxx.deptidxxxx は入力ストリーム1のコンポーネント名
入力キー2yyyy.deptidyyyy は入力ストリーム2のコンポーネント名
出力フィールドempid入力フィールド名 in[1].empid
name入力フィールド名 in[1].name
name_2入力フィールド名 in[2].name

出力ストリームは以下のようになります。
empidnamename_2
1aaasales
2bbb
3cccdev

JOIN処理 が「LEFT OUTER JOIN」の場合、入力ストリーム1のdeptidと入力ストリーム2のdeptidが異なるレコードも出力されます。

■JOIN処理=RIGHT OUTERの例

入力ストリーム1のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
empidnamedeptid
1aaa1
2bbb2
3ccc3
4ccc4

入力ストリーム2のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
deptidname
2sales
3dev
4marketing
5hr

プロパティを以下のように設定します。
プロパティ名説明
JOIN処理RIGHT OUTER JOINright outer joinでレコードをJOINします
入力キー入力キー1xxxx.deptidxxxx は入力ストリーム1のコンポーネント名
入力キー2yyyy.deptidyyyy は入力ストリーム2のコンポーネント名
出力フィールドempid入力フィールド名 in[1].empid
name入力フィールド名 in[1].name
name_2入力フィールド名 in[2].name

出力ストリームは以下のようになります。
empidnamename_2
2bbbsales
3cccdev
4dddmarketing
hr

JOIN処理 が「RIGHT OUTER JOIN」の場合、入力ストリーム1のdeptidと入力ストリーム2のdeptidが異なるレコードも出力されます。

■JOIN処理=FULL OUTERの例

入力ストリーム1のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
empidnamedeptid
1aaa1
2bbb2
3ccc3
4ccc4

入力ストリーム2のレコードが以下のような内容であったとします。(レコードの内容を表形式で記します)
deptidname
2sales
3dev
4marketing
5hr

プロパティを以下のように設定します。
プロパティ名説明
JOIN処理FULL OUTER JOINfull outer joinでレコードをJOINします
入力キー入力キー1xxxx.deptidxxxx は入力ストリーム1のコンポーネント名
入力キー2yyyy.deptidyyyy は入力ストリーム2のコンポーネント名
出力フィールドempid入力フィールド名 in[1].empid
name入力フィールド名 in[1].name
name_2入力フィールド名 in[2].name

出力ストリームは以下のようになります。
empidnamename_2
1aaa
2bbbsales
3cccdev
4dddmarketing
hr

JOIN処理 が「FULL OUTER JOIN」の場合、入力ストリーム1のdeptidと入力ストリーム2のdeptidが異なるレコードも出力されます。