注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
通常、出力データセットがインクリメンタル(差分処理)にビルドされると、各入力データセットの未処理のトランザクションがすべて同じジョブで処理されます。ただし、状況によっては、ジョブで処理されるトランザクション数が大きく変わることがあります。
SNAPSHOT モードでビルドされ、入力全体が最初から読み取られる場合(たとえば、トランスフォームのセマンティックバージョンが引き上げられた場合)。トランスフォームの各インクリメンタル入力にトランザクション上限を設定して、各ジョブで読み取るデータ量を制限できます。
以下の例では、次の入力を使用するようにインクリメンタルトランスフォームを設定します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24from transforms.api import transform, Input, Output, incremental @incremental( v2_semantics=True, strict_append=True, snapshot_inputs=["snapshot_input"] ) @transform( # 最大3件のトランザクションを読み取るように設定されたインクリメンタル(差分処理)入力 input_1=Input("/examples/input_1", transaction_limit=3), # 最大2件のトランザクションを読み取るように設定されたインクリメンタル入力 input_2=Input("/examples/input_2", transaction_limit=2), # トランザクション数の制限がないインクリメンタル入力 input_3=Input("/examples/input_3"), # 毎回ビュー全体が読み取られるスナップショット入力 snapshot_input=Input("/examples/input_4"), output=Output("/examples/output") ) def compute(input_1, input_2, input_3, snapshot_input, output): ...
トランザクション上限を有効にすると、データの一部しか処理されないため、ビルドが成功しても、データセットが上流の最新データに追いついていない場合があります。以下の手順でスケジュールを設定すると、出力データセットが入力に対して最新になるまでビルドを続けられます。

以下の手順で、インクリメンタルジョブで入力ごとに読み取られたトランザクションの範囲を確認できます。

このページでは、入力ごとにトランザクションの範囲が報告され、今回と前回のジョブで各入力のどの部分が処理されたかが表示されます。
トランザクションを選択すると、入力の履歴ページに移動し、該当するトランザクションが強調表示されます。
入力にトランザクション上限が設定されている場合も、設定されていない場合も、同じ added、current、previous の読み取り範囲を使用できますが、動作は少し異なります。
以下の例では、トランザクション A から C までをすでに処理したインクリメンタルトランスフォームを考えます。ここで、比較的多数のトランザクション D から J までが入力に追加されたとします。
トランザクション上限なしで入力を読み取る場合、次のジョブでの読み取りモードごとのトランザクション範囲は次のようになります。
D から JA から CA から J一方、トランザクション上限を3に設定して入力を読み取る場合は、入力に追いつくまでに_3回_のジョブが必要です。各ジョブでの読み取りモードごとのトランザクション範囲は次のようになります。
1回目のジョブ:
D から F(次の3件の未処理トランザクション)A から C(前回のジョブで処理されたすべてのトランザクション)A から F(このバッチまでに処理された、このバッチを含むすべてのトランザクション)2回目のジョブ:
G から IA から FA から I3回目のジョブ:
JA から IA から J
ここで、出力がスナップショットされた場合(たとえば、セマンティックバージョンが変更された場合)、入力の開始トランザクションから再び処理され、読み取り範囲は以下のようになります。
トランザクション上限なしの場合:
A から J(すべてのトランザクションが「未処理」になります)A から Jインクリメンタル入力の場合:
1回目のジョブ:
A から CA から C(このバッチまでに処理された、このバッチを含むすべてのトランザクション)2回目のジョブ:
D から FA から CA から F3回目のジョブ:
G から IA から FA から I4回目のジョブ:
JA から IA から J
インクリメンタル(差分処理)トランスフォームでトランザクション制限を使用するには、必要なツールとサービスにアクセスできること、およびトランスフォームとデータセットが以下の要件を満たしていることを確認してください。
トランスフォームは、次の条件を満たす必要があります。
v2_semantics 引数を True に設定していること。3.25.0 以降を使用するように設定されていること。特定のバージョンの Python トランスフォームを使用するには、モジュールの固定でジョブを設定します。既存のインクリメンタルトランスフォームで v2_semantics を有効にすると、次のビルドは SNAPSHOT として実行されます。これは1回だけ発生します。
入力データセットにトランザクション制限を設定するには、次の条件を満たす必要があります。
APPEND トランザクションのみが含まれていること。ただし、最初のトランザクションは SNAPSHOT でもかまいません。現在のビューに含まれるトランザクションのうち、いずれか1つでも DELETE または UPDATE トランザクションである場合、ジョブは Build2:InvalidTransactionTypeForBatchInputResolution エラーで失敗します。