すべてのプロダクト
Search
ドキュメントセンター

DataWorks:複雑な依存関係のスケジューリング原則

最終更新日:Jul 17, 2026

DataWorks では、分、時、日、週、月、年など、異なるスケジューリング頻度を持つ定期タスク間に依存関係を作成できます。各タスクの実行はインスタンスであり、スケジューリング頻度によって生成されるインスタンスの数が決まります。このトピックでは、上位タスクと下位タスクのスケジューリング頻度が異なる場合に、DataWorks がそれらのインスタンス間の依存関係をどのように確立するかについて説明します。

背景情報

  • DataWorks では、定期タスクはそのスケジューリング頻度に基づいてインスタンスを生成します。例えば、時間単位のタスクは毎日対応する数のインスタンスを生成します。タスクの依存関係は、これらのインスタンス間で確立されます。上位タスクと下位タスクのスケジューリング頻度が異なる場合、インスタンスの数とそれらの依存関係のあり方も変わります。

  • DataWorks は、さまざまなスケジューリング依存関係のシナリオをサポートしています。同一サイクルスケジューリング依存またはクロスサイクルスケジューリング依存を設定することを選択できます。詳細については、「同一サイクルスケジューリング依存の設定」および「クロスサイクルスケジューリング依存の設定」をご参照ください。

  • 日単位タスクが時間単位または分単位のタスクに依存するクロスタイムゾーンのシナリオでは、自己依存と近接性の原則を通じて間接的にこれを実現するだけでなく、高度なスケジューリング依存関係設定を有効にして、指定範囲依存を直接使用して必要な依存範囲 (例:[-5, 19]) を設定したり、指定セット依存を使用して固定時刻のインスタンスへの依存関係を正確に設定したりできます。これにより、上位の時間単位タスクに自己依存を設定する必要がなくなります。詳細については、「同一サイクルスケジューリング依存の設定」をご参照ください。

スケジューリング依存関係を設定する前に、これらの概念を理解してください。

No.

説明

参考資料

1

DataWorks は、分、時、日、週、月、年など、複数のスケジューリング頻度をサポートしています。上位タスクと下位タスクのスケジューリング頻度が異なる場合、DataWorks はスケジュール時刻の近接性の原則を使用してスケジューリング依存関係を確立します。

説明
  • 時間単位タスクが別の時間単位タスクに依存し、1 日あたりのインスタンス生成数が同じ場合、この原則は適用されません。依存関係はスケジュール時刻とは無関係です。

  • デフォルトでは、日単位タスクは、同日にその時間単位または分単位の上位タスクによって生成されたすべてのインスタンスに依存します。日単位タスクは、上位タスクからのその日のすべてのデータが処理された後にのみ開始されます。

依存関係のマウント:近接性の原則

2

スケジューリング依存関係は、タスク間にデータ依存関係を確立します。下位タスクは、自身に設定されたスケジュール時刻に関わらず、上位タスクが正常に完了するまで実行されません。

依存関係がタスク実行に与える影響

3

以下のシナリオ例を通じて、近接性の原則をさらに理解できます。

付録 1:複雑な依存関係シナリオの概要

シナリオには以下が含まれます:

依存関係の解決:スケジュール時刻の近接性の原則

DataWorks で定期タスクが実行されると、複数のインスタンスが生成されます。下位インスタンスは上位インスタンスに依存します。特定の上位インスタンスが指定されていない限り、下位インスタンスは依存関係を確立する際に近接性の原則に従います。つまり、下位インスタンスは、自身のスケジュール時刻に最も近く、かつそれより遅くなく、他の下位インスタンスにまだ割り当てられていない上位インスタンスに依存します。さまざまなシナリオにおける依存関係の原則は次のとおりです:

説明
  • 下位タスクのスケジュール時刻が上位タスクのスケジュール時刻より早い場合、下位タスクはスケジュール時刻になってもスケジュールされません。上位タスクが完了するまで待機してからスケジュールされる必要があります。

  • 近接性の原則に基づいて依存関係が確立される場合、特定の日において下位タスクの最初のインスタンスより前にスケジュールされた上位インスタンスがない場合、下位インスタンスはデフォルトでその日の最初の上位インスタンスに依存します。

シナリオ

説明

時間単位タスクと分単位タスク間の依存関係

  • 依存関係はインスタンスのスケジュール時刻に関連する

    • デフォルトの動作:下位インスタンスは近接性の原則に基づいて依存関係が割り当てられます。DataWorks は、各下位インスタンスを、そのスケジュール時刻以前または同時刻で、かつ他の下位インスタンスにまだ割り当てられていない上位インスタンスに割り当てます。

      説明

      上位ノードが下位ノードよりも高い頻度で実行される場合 (つまり、上位ノードが下位ノードよりも多くのインスタンスを生成する場合)、下位インスタンスは実際にはそのスケジューリング間隔 (start, end] 内で生成されたすべての上位インスタンスに依存します。

    • 特殊なケース:上位ノードと下位ノードの両方に自己依存が設定されている場合 (つまり、ノード自身のクロスサイクル依存)、現在の下位インスタンスは、そのスケジュール時刻以前または同時刻の 1 つの上位インスタンスにのみ依存します。

      説明

      時間単位タスクと分単位タスクに自己依存が設定されている詳細なシナリオについては、図をご参照ください。

  • 依存関係はインスタンスのスケジュール時刻に関連しない。

    時間単位タスクが別の時間単位タスクに依存する場合、または分単位タスクが別の分単位タスクに依存し、上位ノードと下位ノードが 1 日あたり同数のインスタンスを生成する場合、依存関係はインスタンスのシーケンスに基づいて 1 対 1 でマッピングされます。

次の図は、時間単位タスクと分単位タスク間の依存関係に関する詳細なシナリオの概要を示しています:

時間単位タスクが時間単位タスクに依存

時間単位タスクが分単位タスクに依存

分単位タスクが時間単位タスクに依存

時間単位タスクが別の時間単位タスクに依存する。

  • シナリオ 1:時間単位タスク B が時間単位タスク A に依存する。

    設定:

    • 時間範囲は毎日 00:00~23:59 に設定。

    • タスク A とタスク B はともに 5 時間ごとにスケジュールされる。

    • タスク A とタスク B は 1 日あたり同数のインスタンスを生成する。

    依存関係:タスク A とタスク B は 1 日あたり同数のインスタンスを生成するため、インスタンスの依存関係は 1 対 1 でマッピングされます。

  • シナリオ 2:

    設定:

    • タスク A は毎日 06:10~21:59 の時間範囲で 4 時間ごとにスケジュールされ、合計 4 つのインスタンスを生成する。

    • タスク B は毎日 08:00~23:59 の時間範囲で 4 時間ごとにスケジュールされ、合計 4 つのインスタンスを生成する。

    依存関係:タスク A とタスク B は 1 日あたり同数のインスタンスを生成するため、インスタンスの依存関係は 1 対 1 でマッピングされます。

日単位タスクが時間単位または分単位タスクに依存

デフォルトの動作:デフォルトでは、日単位タスクは、同日にその時間単位または分単位の上位タスクによって生成されたすべてのインスタンスに依存します。日単位タスクは、上位タスクからのその日のすべてのデータが処理された後にのみ開始されます。

その他のケース:日単位タスクが自身のスケジュール時刻に最も近い時間単位または分単位のインスタンスにのみ依存する必要がある場合は、時間単位または分単位タスクに自己依存を設定できます。この設定後、その時間単位または分単位のインスタンスが完了するとすぐに、日単位タスクが開始されます。

さまざまなスケジューリングシナリオにおける依存関係と実行動作の詳細については、「付録 1:複雑な依存関係シナリオの概要」をご参照ください。

依存関係がタスク実行に与える影響

下位タスクに依存関係が設定されると、上位タスクが正常に完了していない場合、タスクはスケジュール時刻に実行されません。

例えば、時間単位タスク B が日単位タスク A に依存し、時間単位タスク B には自己依存が設定されていないとします。

  • 日単位タスク A:スケジュール時刻は 07:00 に設定されています。

  • 時間単位タスク B:スケジュール時刻は 00:0008:0016:00 に設定されています。

日単位タスク A が完了していない場合、時間単位タスク B はスケジュール時刻 00:00 になっても実行されません。下位タスク B の最も早い実際の実行時刻は 07:00 です。

付録 1:複雑な依存関係シナリオの概要

下位タスクのスケジュール時刻が上位タスクのスケジュール時刻より早い場合、下位タスクはスケジュール時刻になってもディスパッチされません。上位タスクが完了するまで待機する必要があります。特定の日において下位タスクの最初のインスタンスに対して、それより前にスケジュールされた上位タスクのインスタンスがない場合、下位タスクはデフォルトでその日の最初の上位タスクのインスタンスに依存します。

時間単位タスクの他タスクへの依存

シナリオ

依存関係と実行の詳細

時間単位タスクが時間単位タスクに依存

  • 祖先と子孫のインスタンス数が同じ

    同日に上位タスクと下位タスクによって生成されたインスタンスは、1 対 1 でマッピングされます。最初の下位インスタンスは最初の上位インスタンスに依存し、2 番目の下位インスタンスは 2 番目の上位インスタンスに依存する、というようになります。

  • 祖先と子孫のインスタンス数が異なる

    同日に上位タスクと下位タスクによって生成されたインスタンスは、スケジュール時刻の近接性の原則に基づいてマッピングされます。各下位インスタンスは、自身のスケジュール時刻に最も近い (同時刻またはそれ以前の) 上位インスタンスに依存します。

    特殊なケース:上位タスクが下位タスクよりも頻繁に実行されるスケジューリング依存関係の設定 (「上位多頻度・下位少頻度」シナリオ) では、下位インスタンスの依存ロジックは、単純な近接性ではなく、インターバルカバレッジの原則に従います。

    依存範囲:下位インスタンスは、そのサイクル間隔 (start, end] 内で生成されたすべての上位インスタンスに依存します。

    • start は、前の下位インスタンスのスケジュール時刻を指します。

    • end は、現在の下位インスタンスのスケジュール時刻を指します。

時間単位タスクが日単位タスクに依存

  • 自己依存のない時間単位タスク

    現在日に下位の時間単位タスクによって生成されたすべてのインスタンスは、上位の日単位タスクに依存します。下位の時間単位インスタンスは、日単位タスクが完了した後にのみ実行を開始します。その時点で、スケジュール時刻に到達しているすべての時間単位インスタンスが同時に実行されます。

    説明
    • 同時実行を望まない場合は、下位の時間単位タスクに自己依存を設定してください。

    • 下位の時間単位タスクによって生成されたすべての定期インスタンスは、互いに独立して実行されます。

  • 自己依存のある時間単位タスク

    • 最初の時間単位インスタンスのみが上位の日単位タスクに依存します。それ以降の各時間単位インスタンスは、前のサイクルの時間単位インスタンスに依存します。

    • 現在の時間単位インスタンスは、日単位タスクと前のサイクルの時間単位インスタンスの両方が完了した後にのみ実行を開始します。スケジュール時刻に到達していても、時間単位インスタンスは同時に実行されません。

    説明

    自己依存は日またぎの依存関係を作成します。前日の最後の定期インスタンスが完了していない場合、当日のタスクはスケジュールできません。

時間単位タスクが分単位タスクに依存

  • 自己依存のない分単位タスク

    下位の時間単位タスクは、その時間内に上位の分単位タスクによって生成されたすべての分単位インスタンスに依存します。

  • 分単位タスクと時間単位タスクの両方に自己依存がある

    下位の時間単位タスクは、その時間内で自身のスケジュール時刻に最も近い (同時刻またはそれ以前の) 上位の分単位インスタンスに依存します。

日単位タスクの他タスクへの依存

シナリオ

依存関係と実行

日単位タスクが同一サイクルの日単位タスクに依存

  • 自己依存のない上位の日単位タスク

    デフォルトでは、下位の日単位タスクインスタンスは、同一サイクルの上位の日単位タスクインスタンスに依存します。

  • 自己依存のある上位の日単位タスク

    上位の日単位タスクに自己依存が設定されている場合、下位の日単位タスクと上位の日単位タスクの間にはクロスサイクル依存が存在します。

    説明

    自己依存は日またぎの依存関係を作成します。前日の最後の定期インスタンスが完了していない場合、当日のタスクはスケジュールできません。

日単位タスクが当日中の時間単位タスクに依存

  • 自己依存のない時間単位タスク

    下位の日単位タスクは、当日中に上位の時間単位タスクによって生成されたすべての時間単位インスタンスに依存します。日単位タスクは、その日のすべての時間単位データが処理された後にのみ処理を開始します。

    説明

    日単位タスクが特定の時間単位インスタンスにのみ依存する必要がある場合は、時間単位タスクに自己依存を設定できます。その特定の時間単位インスタンスが正常に実行された後、日単位タスクは自動的にスケジュールされます。

  • 自己依存のある時間単位タスク

    下位の日単位タスクは、自身のスケジュール時刻に最も近い (同時刻またはそれ以前の) 上位の時間単位インスタンスに依存します。

日単位タスクが前日の時間単位または分単位タスクに依存

  • 自己依存のない時間単位または分単位タスク

    下位の日単位タスクは、前日に上位タスクによって生成されたすべての時間単位または分単位インスタンスに依存します。

  • 自己依存のある時間単位または分単位タスク

    下位の日単位タスクは、前日に上位タスクによって生成された最後の時間単位または分単位インスタンスに依存します。

次の例では、前日の時間単位タスクに依存する日単位タスクを使用します。

分単位タスクの他タスクへの依存

シナリオ

依存関係の説明

分単位タスクが時間単位タスクに依存

  • 自己依存のない分単位タスク

    下位の分単位タスクの各インスタンスは、自身のスケジュール時刻以前または同時刻で、依存関係が重複しない最も近い時間単位インスタンスに依存します。

    説明

    このシナリオでは、複数の下位の分単位定期インスタンスが、同じ上位の時間単位定期インスタンスに依存します。

  • 分単位タスクと時間単位タスクの両方に自己依存が設定されている

    下位の分単位タスクの各インスタンスは、自身の前のインスタンスに依存し、かつスケジュール時刻の近接性の原則に基づいて、自身のスケジュール時刻以前または同時刻の最も近い上位の時間単位インスタンスに依存します。

分単位タスクが日単位タスクに依存

  • 自己依存のない分単位タスク

    特定日に下位の分単位タスクによって生成されたすべての分単位インスタンスは、日単位タスクに依存します。分単位タスクは、日単位タスクがスケジュール時刻に達し、実行を完了した後にのみ実行できます。

    説明
    • 日単位タスクが完了した後、すでにスケジュール時刻に達している分単位インスタンスは同時に実行されます。同時実行を防ぐには、分単位タスクに自己依存を設定してください。

    • 分単位タスクの異なるインスタンスの実行は互いに影響しません。

  • 自己依存が設定された分単位タスク

    • 下位の分単位タスクによって生成された最初のインスタンスのみが日単位タスクに依存します。他のすべてのインスタンスは、自身の前のインスタンスに直接依存します。

    • 分単位インスタンスは、日単位タスクと前の分単位インスタンスの両方が実行を完了した後にのみスケジューリングを開始します。この場合、すでにスケジュール時刻に達していても、分単位インスタンスは同時に実行されません。

    説明

    自己依存は日またぎの依存関係を作成します。前日の最後の定期インスタンスが完了していない場合、当日のタスクはスケジュールできません。

週/月/年単位タスクへの他タスクの依存

日単位、時間単位、または分単位のタスクが週単位、月単位、または年単位のタスクに依存する場合、週単位、月単位、または年単位のタスクは、スケジュールされていない日にドライランインスタンスを生成します。これらのインスタンスは実際にはデータを処理せず、リソースを消費せず、下位タスクの実行をブロックしません。

次の例では、自己依存のない週単位タスクに依存する日単位タスクのシナリオを使用します:

  • 上位の週単位タスク:月曜日と金曜日に正常に実行されます。火曜日、水曜日、木曜日、土曜日、日曜日には、ドライランインスタンスが生成され、コードロジックを実行せずにスケジュール時刻に自動的に成功ステータスに設定されます。ドライランインスタンスは、下位インスタンスの正常な実行に影響を与えません。

  • 下位の日単位タスク:毎日スケジュールされたインスタンスを生成し、上位の週単位タスクによって毎日生成されるインスタンス (ドライランインスタンスを含む) に依存します。その日の上位の週単位タスクのインスタンスが正常に完了した後、対応する下位インスタンスがトリガーされて実行されます。

付録 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 のインスタンスはどれもスケジュールされません。

  • 例外:バックフィルにグループ化実行を選択した場合、このシリアル化メカニズムは有効になりません。各実行グループ内のタスクインスタンスは独立して実行され、他のグループのインスタンスの状態に影響されません。