DataWorks では、分、時、日、週、月、年など、異なるスケジューリング頻度を持つ定期タスク間に依存関係を作成できます。各タスクの実行はインスタンスであり、スケジューリング頻度によって生成されるインスタンスの数が決まります。このトピックでは、上位タスクと下位タスクのスケジューリング頻度が異なる場合に、DataWorks がそれらのインスタンス間の依存関係をどのように確立するかについて説明します。
背景情報
DataWorks では、定期タスクはそのスケジューリング頻度に基づいてインスタンスを生成します。例えば、時間単位のタスクは毎日対応する数のインスタンスを生成します。タスクの依存関係は、これらのインスタンス間で確立されます。上位タスクと下位タスクのスケジューリング頻度が異なる場合、インスタンスの数とそれらの依存関係のあり方も変わります。
DataWorks は、さまざまなスケジューリング依存関係のシナリオをサポートしています。同一サイクルスケジューリング依存またはクロスサイクルスケジューリング依存を設定することを選択できます。詳細については、「同一サイクルスケジューリング依存の設定」および「クロスサイクルスケジューリング依存の設定」をご参照ください。
日単位タスクが時間単位または分単位のタスクに依存するクロスタイムゾーンのシナリオでは、自己依存と近接性の原則を通じて間接的にこれを実現するだけでなく、高度なスケジューリング依存関係設定を有効にして、指定範囲依存を直接使用して必要な依存範囲 (例:[-5, 19]) を設定したり、指定セット依存を使用して固定時刻のインスタンスへの依存関係を正確に設定したりできます。これにより、上位の時間単位タスクに自己依存を設定する必要がなくなります。詳細については、「同一サイクルスケジューリング依存の設定」をご参照ください。
スケジューリング依存関係を設定する前に、これらの概念を理解してください。
No. | 説明 | 参考資料 |
1 | DataWorks は、分、時、日、週、月、年など、複数のスケジューリング頻度をサポートしています。上位タスクと下位タスクのスケジューリング頻度が異なる場合、DataWorks はスケジュール時刻の近接性の原則を使用してスケジューリング依存関係を確立します。 説明
| |
2 | スケジューリング依存関係は、タスク間にデータ依存関係を確立します。下位タスクは、自身に設定されたスケジュール時刻に関わらず、上位タスクが正常に完了するまで実行されません。 | |
3 | 以下のシナリオ例を通じて、近接性の原則をさらに理解できます。 | シナリオには以下が含まれます: |
依存関係の解決:スケジュール時刻の近接性の原則
DataWorks で定期タスクが実行されると、複数のインスタンスが生成されます。下位インスタンスは上位インスタンスに依存します。特定の上位インスタンスが指定されていない限り、下位インスタンスは依存関係を確立する際に近接性の原則に従います。つまり、下位インスタンスは、自身のスケジュール時刻に最も近く、かつそれより遅くなく、他の下位インスタンスにまだ割り当てられていない上位インスタンスに依存します。さまざまなシナリオにおける依存関係の原則は次のとおりです:
下位タスクのスケジュール時刻が上位タスクのスケジュール時刻より早い場合、下位タスクはスケジュール時刻になってもスケジュールされません。上位タスクが完了するまで待機してからスケジュールされる必要があります。
近接性の原則に基づいて依存関係が確立される場合、特定の日において下位タスクの最初のインスタンスより前にスケジュールされた上位インスタンスがない場合、下位インスタンスはデフォルトでその日の最初の上位インスタンスに依存します。
シナリオ | 説明 | 図 |
時間単位タスクと分単位タスク間の依存関係 |
| 次の図は、時間単位タスクと分単位タスク間の依存関係に関する詳細なシナリオの概要を示しています: 例: 時間単位タスクが別の時間単位タスクに依存する。
|
日単位タスクが時間単位または分単位タスクに依存 | デフォルトの動作:デフォルトでは、日単位タスクは、同日にその時間単位または分単位の上位タスクによって生成されたすべてのインスタンスに依存します。日単位タスクは、上位タスクからのその日のすべてのデータが処理された後にのみ開始されます。 その他のケース:日単位タスクが自身のスケジュール時刻に最も近い時間単位または分単位のインスタンスにのみ依存する必要がある場合は、時間単位または分単位タスクに自己依存を設定できます。この設定後、その時間単位または分単位のインスタンスが完了するとすぐに、日単位タスクが開始されます。 |
さまざまなスケジューリングシナリオにおける依存関係と実行動作の詳細については、「付録 1:複雑な依存関係シナリオの概要」をご参照ください。
依存関係がタスク実行に与える影響
下位タスクに依存関係が設定されると、上位タスクが正常に完了していない場合、タスクはスケジュール時刻に実行されません。
例えば、時間単位タスク B が日単位タスク A に依存し、時間単位タスク B には自己依存が設定されていないとします。
日単位タスク A:スケジュール時刻は
07:00に設定されています。時間単位タスク B:スケジュール時刻は
00:00、08:00、16:00に設定されています。
日単位タスク A が完了していない場合、時間単位タスク B はスケジュール時刻 00:00 になっても実行されません。下位タスク B の最も早い実際の実行時刻は 07:00 です。
付録 1:複雑な依存関係シナリオの概要
下位タスクのスケジュール時刻が上位タスクのスケジュール時刻より早い場合、下位タスクはスケジュール時刻になってもディスパッチされません。上位タスクが完了するまで待機する必要があります。特定の日において下位タスクの最初のインスタンスに対して、それより前にスケジュールされた上位タスクのインスタンスがない場合、下位タスクはデフォルトでその日の最初の上位タスクのインスタンスに依存します。
時間単位タスクの他タスクへの依存
日単位タスクの他タスクへの依存
分単位タスクの他タスクへの依存
週/月/年単位タスクへの他タスクの依存
付録 2:ワークフローのスケジューリング
DataWorks では、上位ノードと下位ノードをワークフロー全体として追加できます。ワークフローのスケジューリングの詳細については、「ワークフローのスケジューリング」をご参照ください。
付録 3:クロスタイムゾーンのグローバルデータ集約 (指定範囲依存)
中国のデータウェアハウスが世界中の複数のリージョンからのデータを一元的に処理する場合、各リージョンの上位の時間単位タスクは現地時間に基づいて実行されますが、下位の日単位タスクは中国のタイムゾーンに基づいて日次データを集約します。タイムゾーンの違いにより、下位の日単位タスクは指定範囲依存を使用して、特定のタイムウィンドウ内の各リージョンの時間単位上位タスクのすべてのインスタンスに依存する必要があります。
シナリオ例 (データタイムスタンプ:2026-01-22)
リージョン | 中国との時差 | 依存タイプ | オフセット設定 | 実際の依存インスタンス |
インド | 2.5 時間遅れ | 指定範囲 | [-3, 21] | 01-21 21:00 ~ 01-22 21:00 (24 インスタンス) |
サウジアラビア | 5 時間遅れ | 指定範囲 | [-5, 19] | 01-21 19:00 ~ 01-22 19:00 (24 インスタンス) |
バックフィルシナリオにおける日またぎ依存の動作
バックフィルタスクによって生成されたインスタンスの日またぎ依存の動作は、通常のスケジューリングインスタンスとは異なります。
1. 指定範囲または指定セットによって設定された日またぎ依存
バックフィルタスクを実行すると、指定範囲または指定セットによって設定された日またぎ依存は有効になりません。
特定の動作:複数のビジネス日付に対してバックフィルインスタンスが生成されると、システムは依存関係の解決中にビジネス日付の境界を越えるすべての依存関係を自動的に無視します。つまり、バックフィルインスタンスは同じビジネス日付の上位インスタンスのみをマウントし、設定で定義されている前日または翌日を指す上位インスタンスはマウントしません。
例:日単位タスクが上位の時間単位タスクに対して範囲依存
[-4h, 0](当日の 00:00 より前の 4 つのインスタンスに依存) で設定されているとします。通常のスケジューリングでは、5 月 11 日のインスタンスは5 月 10 日の 20:00~23:00のインスタンスに依存します。しかし、5 月 11 日のデータをバックフィルする場合、この日またぎ依存は無視され、インスタンスはどの上位インスタンスもマウントしません。
2. バックフィルにおけるデフォルトの日またぎ依存 (シリアル化メカニズム)
デフォルトでは、グループ化されていないバッチバックフィルを実行すると、異なるビジネス日付のインスタンス間に暗黙的なシリアル依存が存在します。
特定の動作:ビジネス日付
Dのすべてのバックフィルインスタンスは、ビジネス日付D-1のすべてのバックフィルインスタンスが正常に完了するまで待機してから実行を開始します。つまり、日付D-1のいずれかのインスタンスが失敗した場合、日付Dのインスタンスはどれもスケジュールされません。例外:バックフィルにグループ化実行を選択した場合、このシリアル化メカニズムは有効になりません。各実行グループ内のタスクインスタンスは独立して実行され、他のグループのインスタンスの状態に影響されません。