DataWorks の自動トリガーされたタスクは、デフォルトで T+1 モードを使用します。つまり、デプロイメントの翌日に生成されるインスタンスに、新しくデプロイされた内容が反映されます。新規にデプロイしたタスク、または変更したタスクを同日に有効化するには、デプロイメント直後 モードを使用します。
仕組み
タスクを変更して コミット した後、新しい構成が同日または翌日のいずれに有効になるかは、インスタンス生成モードによって異なります。
翌日 (デフォルト)
このデフォルトの推奨オプションでは、その日に実行中のインスタンスから変更を分離することで、本番環境の安定性を最大化します。
-
動作原理:
T 日 のデプロイではタスク定義のみが変更され、その日のインスタンスの実行には影響しません。 -
T 日 (デプロイ日) への影響:
-
システムはタスクのコードとプロパティ定義のみを更新します。T 日にすでに生成済みまたはスケジュール済みのインスタンスは影響を受けず、デプロイ前の構成に基づいて実行されます。
-
当日のデータに新しいロジックを適用する場合は、デプロイ後に T 日のインスタンスに対して手動でデータ補填を実行します。
-
-
T+1 日 (翌日) への影響:
すべての変更は、デプロイ翌日 (T+1 日) の最初の自動トリガーされたインスタンスから有効になります。これらのインスタンスは新しい構成に基づいて生成され、実行されます。
デプロイメント直後
このモードでは、デプロイ日にタスク変更が適用されます。システムはタスクのデプロイメント時刻と各インスタンスのスケジュール時刻を比較し、T 日 におけるインスタンスの実行方法を判定します。
-
動作原理:
システムは、T 日の各自動トリガーされたインスタンスのスケジュール時刻を、タスクのデプロイ時刻に 10 分間のシステムバッファーを加えた時刻と比較します。 -
スケジュール時刻 < デプロイメント時刻 + 10 分
-
結果:新規タスクはドライランを実行します。変更されたタスクはインスタンスを生成しません。
-
一度もデプロイされたことのない新規タスクの場合、インスタンスは期限切れとなり、ビジネスロジックを実行せずにドライランを実行します。変更して再デプロイしたタスクの場合、期限切れインスタンスは生成されません。
-
-
スケジュール時刻 > デプロイメント時刻 + 10 分
-
結果:通常実行。
-
システムは新しい構成に基づいてインスタンスを生成し、実行します。
-
-
T+1 日 (翌日) への影響:
翌日 (T+1 日) のすべての自動トリガーされたインスタンスは、新しい構成に基づいて生成されます。
22:00 から 24:00 の間に送信されたデプロイメントは、選択した生成モードにかかわらず、T+2 日に有効になります。
制限事項
-
変更の有効時刻:システムは毎日
22:00から24:00の間にインスタンスをバッチ生成します。この時間帯に送信されたデプロイメントについては、変更は T+2 日に生成される自動トリガーされたインスタンスで有効になります。 -
データソース変更の制限:ノードのデータソースのみを変更した場合、
デプロイメント直後を選択しても、その日にすでに生成されている自動トリガーされたインスタンスは更新されません。これらのインスタンスは、以前に設定されたデータソースを使用して実行されます。変更を直ちに適用するには、データ補填 機能を使用します。
即時デプロイのシナリオ
デプロイメント直後 モードはリスクが高くなります。不適切に使用すると、スケジューリング依存関係の乱れ、想定外のインスタンス削除または置換、同日タスクの安定性低下を引き起こす可能性があります。
推奨されるユースケース
このモードは慎重に使用し、次のシナリオに限って使用してください:
-
同日に実行する必要がある新規タスク:デプロイ日に実行する必要があり、複雑な祖先タスクまたは子孫タスクの依存関係を持たない新規タスクに使用します。
-
既存インスタンスの置換:当日分として生成済みだがまだ実行されていない保留中の自動トリガーされたインスタンスを置き換えるために使用します。
高リスクのシナリオ (非推奨)
次のシナリオでは、同日のスケジューリング依存関係が複雑化し、スケジューリング失敗の原因となるため、このモードの使用は避けてください:
-
デプロイ済みタスクのスケジュール変更:特に、複雑な祖先タスクおよび子孫タスクの依存関係を持つタスクではリスクが高くなります。スケジューリング周期 (例:日次から時間単位) を変更し、即時にデプロイすると、古いインスタンスが保持されたまま新しいインスタンスが作成される混在状態となり、依存関係が乱れる可能性があります。
-
テーブルスキーマの更新失敗:スケジューリング周期を変更した後、出力テーブル (例:MaxCompute テーブル) のスキーマまたはパーティションが更新されず、最新の結果を反映しない場合があります。
デプロイメント直後モードでは、スケジューリング周期の変更により新しいインスタンスは作成されますが、古いインスタンスは自動的に削除されません。古いインスタンスと新しいインスタンスが共存している間、古いインスタンスは古い構成を使用して実行されるため、出力テーブルのスキーマまたはパーティションがそれに応じて更新されません。トラブルシューティング手順:
-
デプロイ日にスケジューリング周期が変更されているかどうかを確認します。
-
[オペレーションセンター] で、当該タスクの古いインスタンスと新しいインスタンスが共存しているかどうかを確認します。
-
古い構成で実行されており、出力テーブルが更新されない原因となっているインスタンスを特定します。
解決策:
-
タスクを
T+1モードに切り替え、タスクを再度デプロイします。 -
当日分のインスタンスに対して データ補填 を実行します。
-
-
祖先タスクと子孫タスクでインスタンス生成モードが一致しない:たとえば、祖先タスクが
T+1モードを使用し、子孫タスクがデプロイメント直後を使用している場合、同日に生成された子孫タスクのインスタンスが祖先依存関係を見つけられず、孤立タスクとなって自動実行できなくなります。
代替案
デプロイ済みタスクの変更を伴うシナリオでは、より安全な方法として次を実施します:
-
デフォルトの
T+1モードでタスクをデプロイします。 -
デプロイが成功した後、タスクに対して データ補填 を実行し、当日分のインスタンスを手動でトリガーします。
シナリオ
シナリオ 1:新規タスク
新規タスクをデプロイした後、インスタンスの実行は、スケジュール時刻が (デプロイ時刻に 10 分間のバッファーを加えた時刻) より前か後かによって決まります。
|
スケジュール時刻 |
動作 |
|
(デプロイメント時刻 + 10 分) より後 |
システムは通常の 自動トリガーされたインスタンス を生成し、スケジュール時刻に実行します。 |
|
(デプロイメント時刻 + 10 分) 以前、または同時刻 |
システムは リアルタイムで生成された期限切れインスタンス を生成します。このインスタンスはドライラン状態であり、実際には実行されません。 当日分のデータを処理する必要がある場合は、その日のデータタイムスタンプに対してデータ補填を実行できます。この操作でも、インスタンスが生成されるまでに 10 分の遅延があります。詳細については、「仕組み」をご参照ください。 |
例:タスクを本番環境に 12:00 にデプロイした場合、リアルタイムインスタンスは 12:10 に有効になります。
-
タスクのスケジュール時刻が
12:10より後の場合、タスクはスケジュールされて実行されます。 -
タスクのスケジュール時刻が
12:10より前の場合、タスクはドライランを実行し、インスタンスのステータスは リアルタイムで生成された期限切れインスタンス になります。
シナリオ 2:スケジューリング周期の更新
本番タスクのスケジューリングプロパティ (頻度や時刻など) を更新して変更をデプロイすると、変更前と変更後のインスタンスが同日に共存し、スケジューリング依存関係が複雑になる場合があります。
このシナリオが発生するのは、即時生成でタスクをデプロイした当日のみです。翌日以降は、タスクは新しい構成に基づいて自動トリガーされたインスタンスを通常どおり生成します。
具体的な動作は次のとおりです:
-
新しいスケジュール時刻が未来の場合:
DataWorks は、将来の時間枠向けにすでに生成されているインスタンスを、最新のスケジュール構成に基づく新しいインスタンスに置き換えます。
-
新しいスケジュール時刻が過去の場合:
DataWorks は、新しい時刻より前にスケジュールされたインスタンスを保持し、それ以降にスケジュールされたインスタンスを 置き換えまたは削除 します。
シナリオ 3:モードの不一致
祖先タスクと子孫タスクがどちらも新規タスクであっても、異なるインスタンス生成モードを使用している場合、子孫タスクが孤立タスクになることがあります。たとえば、祖先タスクが [T+1 翌日生成] を使用し、子孫タスクが [公開後、即時に生成されます。] を使用している場合、子孫タスクは 孤立タスク になる可能性があります。孤立タスクは自動的に実行されません。子孫依存関係が多い場合、下流の業務プロセスに深刻な影響を与える可能性があります。
シナリオ 4:祖先スケジュールの変更
異なる実行頻度を持つ子孫タスクが存在する祖先タスクのスケジュールを変更すると、子孫タスクの依存関係は、祖先タスクの最新のスケジュール構成 (例:日次、月次、時間単位) に基づいて調整されます。
本番タスクのスケジュールを変更すると、子孫インスタンスの依存関係は新しいスケジュールに基づいて再確立されます。これは、新しく生成されるインスタンスと、置き換えられずに残っている古いインスタンスの両方に影響します。時間単位および分単位の依存関係シナリオの詳細については、「複雑な依存関係シナリオにおけるスケジューリング構成の原則とサンプル」をご参照ください。このシナリオは、デプロイ対象のタスクバージョンでインスタンス生成モードが [公開後、即時に生成されます。] に設定されており、かつスケジュールの時刻変更も含まれる場合にのみ適用されます。
次に例を示します:
-
シナリオ 1:祖先タスクのスケジュールを 6 時間ごとから 8 時間ごと (00:00、08:00、16:00) に変更し、「デプロイメント直後」モードを選択した場合

-
シナリオ 2:祖先タスクのスケジュールを 6 時間ごとから毎日 16:00 に変更し、「デプロイメント直後」モードを選択した場合
