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

DataWorks:前サイクル結果への依存関係

最終更新日:Mar 03, 2026

前サイクルへの依存関係とは、あるノードインスタンスが、別のノードの前サイクルにおけるインスタンスの正常な実行に依存するクロスサイクル依存のことです。

DataWorks では、以下の 3 種類のクロスサイクル依存がサポートされています。

  • 第 1 レベルの子ノード

    • ノード依存関係:現在のノードは、直接の下流ノード(第 1 レベルの子ノード)に依存します。たとえば、ノード A に下流ノード B、C、D の 3 つがある場合、「第 1 レベルの子ノードへの依存」を設定すると、ノード A の現在のインスタンスは、ノード B、C、D の前サイクルにおけるインスタンスがすべて正常に完了することに依存します。

    • ビジネスシナリオ:現在のノードの実行は、前サイクルにおいて下流ノードがデータクレンジングを正常に完了したことに依存します。このクレンジング対象データは、前サイクルにおける現在のノードの出力テーブルに由来します。クレンジング結果が期待通りであることを確認するには、下流ノードの出力テーブルに Data Quality ルールを設定できます。

  • 現在ノード

    • ノード依存関係:これはクロスサイクルにおける自己依存です。現在のノードインスタンスは、自身の前サイクルにおけるインスタンスの正常な完了に依存します。

    • ビジネスシナリオ:現在のノードの実行は、前サイクルで自身が生成したビジネスデータに依存します。データが期待通りであることを確認するには、ノードの出力テーブルに Data Quality モニタリングルールを設定できます。

  • カスタム:ノード ID を入力して、依存先ノードを手動で指定できます。複数のノードを指定する場合は、ID をカンマ (,) で区切ってください(例:12345,23456)。

    • ノード依存関係:現在のノードの実行は、前サイクルにおける指定されたカスタムノードの正常な完了に依存します。

    • ビジネスシナリオ:現在のノードがそのデータを直接処理しない場合でも、ビジネスロジック上、他のビジネスプロセスからの正常なデータ出力に依存する必要があります。

オペレーションセンターでは、クロスサイクル依存は破線で表示され、同一サイクル内の依存関係と区別されます。

ノードを非公開にする際は、その依存関係を削除する必要があります。これには、クロスサイクル依存(①)および同一サイクル依存(②)の両方が含まれます。Delete

上流ノードのどのサイクルに依存するかを選択できます。通常、同一サイクル依存またはクロスサイクル依存のいずれか一方のみを選択します。自動解析機能はデフォルトで上流ノードへの同一サイクル依存を作成します。これを変更するには、まず同一サイクル依存を削除し、その後でクロスサイクル依存を追加する必要があります。詳細については、「スケジューリング依存関係ロジック」をご参照ください。

次の図は、ビジネスフロー内のノードの依存関係を示しています。Dependencies

オペレーションセンターのページに、ビジネスフローの依存関係が表示されます。Dependencies

次の図は、xc_create ノードのコード例を示しています。Node

図に示すように、xc_create ノードの SQL コードは xc_1 および xc_2 の 2 つのテーブルを作成し、データを挿入します。これらのテーブルはその後、ノードの出力として設定されます。

次の図は、xc_select ノードのコード例を示しています。Node example

図に示すように、xc_select ノードの SQL コードは、xc_create ノードによって生成されたテーブルからデータを照会します。自動解析機能により、xc_create ノードが xc_select ノードの上流依存関係として自動的に識別されます。

前サイクルへの依存:第 1 レベルの子ノード

ノード依存関係:現在のノードは、前サイクルにおける直接の下流ノード(第 1 レベルの子ノード)の正常な完了に依存します。たとえば、ノード A に下流ノード B、C、D の 3 つがある場合、ノード A の現在のインスタンスは、B、C、D の前サイクルにおけるインスタンスがすべて正常に完了した場合にのみ実行されます。

ビジネスシナリオ:現在のノードの実行は、前サイクルにおいて下流ノードがデータクレンジングを正常に完了したことに依存します。このクレンジング対象データは、現在のノードの出力テーブルに由来します。現在のノードインスタンスは、下流ノードが前サイクルで正常に実行された場合にのみ実行されます。

xc_create ノードは、第 1 レベルの子ノードに依存するように設定されています。First-level child node

オペレーションセンターのページに、各ノードの依存関係が表示されます。Dependencies

前サイクルへの依存:現在ノード

ノード依存関係:現在のノードインスタンスは、自身の前サイクルにおけるインスタンスの正常な完了に依存します。前サイクルのインスタンスが正常に完了しなかった場合、現在のインスタンスはブロックされます。

ビジネスシナリオ:ノードの現在の実行は、前サイクルにおける自身の実行ステータスに依存します。この例では観察しやすくするため、ノードは 1 時間ごとにスケジュールされています。

オペレーションセンター > サイクルタスク > サイクルインスタンス ページに移動して、ノードの依存関係を確認します。

説明

1 時間ごとの自己依存(前サイクルへの依存:現在ノード)を持つノードの場合、前サイクルのインスタンスが正常に実行されなかった場合、次の時間帯のインスタンスも実行されません。

たとえば、1 時間ごとのタスクが失敗または実行されなかった場合、その日の以降のすべての時間帯におけるノードのインスタンスも実行がブロックされます。

前サイクルへの依存:カスタムノード

ノード依存関係:現在のノード(xc_create)は、前サイクルにおけるカスタムノード(1000374815)の正常な完了に依存します。この依存関係はビジネスロジック上必要ですが、現在のノードのコードはノード 1000374815 の出力テーブルを使用しません。

ビジネスシナリオ:ビジネスロジック上、ノード 1000374815 の正常なデータ出力に依存する必要があります。ただし、現在のノード(xc_create)は、ノード 1000374815 の出力テーブルから選択するなど、このビジネスデータを直接処理しません。

ノード 1000374815 は、xc_create ノードのカスタム上流依存関係として選択されています。Node

オペレーションセンター > サイクルタスク > サイクルインスタンス ページに移動して、ノードの依存関係を確認します。Cycle instance

クロスサイクル依存の高度な構成

ブランチシナリオでは、通常、ブランチノードには複数の下流ノードがありますが、そのうち 1 つだけが実行され、残りはドライランに設定されます。このドライランプロパティは、ドライラン状態のブランチのすべての子ノードに伝播します。このような状況に対応するため、DataWorks では次のスケジューリング属性が提供されています:先祖ノードのドライランプロパティをサイクル間で伝播しない

ただし、下流ブランチ内のノードが前サイクルに対して自己依存を持ち、かつそのブランチが前サイクルで選択されなかった場合、そのノードは無期限にドライラン状態になります。

たとえば、ノード(I_am_the_left_one)がドライランに設定されている場合、その下流ノードもドライランに設定されます。Branch node

ノードの次サイクルにおける実行ステータスが、前サイクルのドライランプロパティではなく、次サイクルでのブランチ選択によって決定されるようにするには、次の手順を実行します。

  1. ノードエディターページの右側で、スケジューリング構成 をクリックします。

  2. 時間プロパティ エリアで、前サイクルへの依存 を選択します。

  3. 高度な構成 をクリックします。

  4. 先祖ノードのドライランプロパティをサイクル間で伝播しない を選択します。これにより、タスクは前サイクルのブランチノードのドライランプロパティの影響を受けなくなります。Dry-run property

説明

このオプションは、選択されなかった先祖ブランチノードから伝播したドライランプロパティにのみ適用されます。前サイクルの通常ノードのドライランプロパティには影響しません。

クロスサイクル依存の典型的なシナリオ

  • シナリオ 1:

    • シナリオの説明:日次ノードが時間単位ノードに依存していますが、日次ノードをスケジュール時刻(例:12:00)に待機せずに実行したい(24 個すべての時間単位インスタンスの完了を待たない)。

    • 解決策:上流の時間単位ノードに、前サイクルへの依存 > 現在ノード を選択して自己依存を構成します。下流の日次ノードのスケジュール時刻を 12:00 に設定します。日次ノードにはクロスサイクル依存は不要です。

      上流の時間単位ノードの 12:00 インスタンスが正常に実行されると、下流の日次ノードが実行を開始します。

  • シナリオ 2:

    • シナリオの説明:日次ノードが、時間単位ノードの前日分のデータに依存しています。

    • 解決策:下流の日次ノードに 前サイクルへの依存 > カスタム を構成し、上流の時間単位ノードの ID を入力します。

  • シナリオ 3:

    • シナリオの説明:時間単位ノードが日次ノードに依存しています。上流の日次ノードが完了した時点で、下流の時間単位ノードの複数のスケジュール時刻がすでに過ぎており、時間単位ノードの複数インスタンスが同時に起動する可能性があります。

    • 解決策:下流の時間単位ノードに、前サイクルへの依存 > 現在ノード を選択して自己依存を構成します。これにより、時間単位インスタンスが同時ではなく逐次的に実行されるようになります。

  • シナリオ 4:

    • リアルタイムシナリオ:ノードが前エポックで生成したデータに依存している場合、データの生成時刻をどのように確認すればよいでしょうか。

    • 解決策:ノードに、前サイクルへの依存 > 現在ノード を選択して自己依存を構成します。