トランザクション制御条件
トランザクション制御条件は[トランザクション制御]タブで設定します。トランザクション制御条件は各行をテストして、行をコミットするタイミング、行をロールバックするタイミング、またはトランザクションの変更なしで続行するタイミングを特定します。
次の画像は、[トランザクション制御]タブを示しています。
注: トランザクション制御条件を指定する前に、入力データがソートされていることを確認します。入力データは、トランザクション制御条件で使用するフィールドでソートする必要があります。
次のいずれかのタイプの条件を使用して行データをテストできます。
- 簡易
フィールド値が変更されたかどうかをテストする場合は、単純条件を使用します。例えば、ORDER_DATEが変更された場合、現在の行をターゲットに書き込む前にトランザクションをコミットします。そうでない場合、データの処理を続行します。
単純条件を設定するには、[フィールドの選択]リストからテストするフィールドを選択し、[Then]および[Else]文の結果として実行されるアクションを選択します。
- 詳細
式を使用して行データをテストする場合は、詳細条件を使用します。例えば、NEW_FILE_FLAG=’Y’ AND DEPT_ID>1000の場合、トランザクションをコミットしますが、現在の行は次のトランザクションに含めます。そうでない場合、データの処理を続行します。
詳細条件を設定するには、[If]文の式を定義します。式では、フィールド、パラメータ、組み込み関数、およびユーザー定義関数を使用できます。次に、[Then]文と[Else]文の結果として実行されるアクションを選択します。
- カスタム
カスタム条件を使用して、複数のブランチを持つ複雑な条件式を定義します。例えば、現在のレコード番号とバッチサイズを使用して、データをターゲットにバッチコミットすることができます。RECORD_NUMBER=1の場合は、データの処理を続行します。MOD(RECORD_NUMBER, $$BATCH_SIZE)=1の場合は、現在の行をターゲットに書き込む前にトランザクションをコミットします。そうでない場合、データの処理を続行します。
カスタム条件を設定するには、DECODE関数またはネストされたIIF関数を使用して行データをテストし、結果として実行されるアクションを実行する式を定義します。式では、フィールド、パラメータ、組み込み関数、およびユーザー定義関数を使用できます。
- パラメータを使用します
- 式パラメータを使用して条件を表現できます。マッピングタスクの実行時またはパラメータファイルへの値の入力時にパラメータ値を入力します。
テスト結果に基づく条件の[実行するアクション]パートと[Else]パートでは、次のアクションを指定できます。
アクション | 説明 |
|---|
トランザクションを続行 | データ統合は、この行にはトランザクション変更を行いません。 カスタム条件では、TC_CONTINUE_TRANSACTIONを使用します。 |
次より前にコミット | データ統合はトランザクションをコミットし、新しいトランザクションを開始し、現在の行をターゲットに書き出します。現在の行は、新しいトランザクション内にあります。 カスタム条件では、TC_COMMIT_BEFOREを使用します。 |
次より後にコミット | データ統合は、現在の行をターゲットに書き出し、トランザクションをコミットし、新しいトランザクションを開始します。現在の行は、コミットされたトランザクション内にあります。 カスタム条件では、TC_COMMIT_AFTERを使用します。 |
次より前にロールバック | データ統合は、現在のトランザクションをロールバックし、新しいトランザクションを開始し、現在の行をターゲットに書き出します。現在の行は、新しいトランザクション内にあります。 カスタム条件では、TC_ROLLBACK_BEFOREを使用します。 |
次より後にロールバック | データ統合は、現在の行をターゲットに書き出し、トランザクションをロールバックし、新しいトランザクションを開始します。現在の行は、ロールバックされたトランザクション内にあります。 カスタム条件では、TC_ROLLBACK_AFTERを使用します。 |