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

DataWorks:ユースケース 2:クロスサイクル依存の設定

最終更新日:Jul 30, 2026

クロスサイクル依存は、ノードの現在のサイクルのインスタンスを、前周期のインスタンスの正常な完了に関連付けます。

DataWorks は、次の 3 種類のクロスサイクル依存をサポートしています。

  • 子ノードのインスタンス

    • この依存関係では、ノードはその直接の下流ノードに依存します。 たとえば、ノード A に 3 つの下流ノード (B、C、D) がある場合、その現在のインスタンスは、ノード B、C、D の前周期のインスタンスがすべて成功した後にのみ実行されます。

    • この依存関係は、ノードの現在の実行が、前周期の出力テーブル内のデータを下流ノードが正常にクレンジングすることに依存する場合に一般的に使用されます。 下流ノードが期待どおりにデータをクレンジングしたことを検証するために、それらの出力テーブルにデータ品質ルールを設定できます。

  • 現在のノードのインスタンス

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

    • この依存関係は、ノードの現在の実行が、前回の実行で生成されたビジネスデータに依存する場合に一般的に使用されます。 データクレンジングの結果が期待どおりであることを検証するために、ノードの出力テーブルに対してデータ品質のモニタリングルールを設定できます。

  • カスタムノードのインスタンス:他のノードの ID を手動で入力して、依存関係を指定します。 複数のノードを指定する場合は、ID をカンマ (,) で区切ります (例: 12345,23456)。

    • この依存関係では、現在のノードのインスタンスは、指定されたすべてのカスタムノードの前周期のインスタンスが成功した後にのみ実行されます。

    • 一般的なユースケースは、ビジネスロジック上、別のプロセスで生成されたデータに依存する必要がありますが、現在のノードのコードがそのデータを直接操作しない場合です。

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

ノードを非アクティブ化する場合は、そのスケジューリング依存関係を削除する必要があります。 これには、クロスサイクル依存と同一サイクル依存の両方が含まれます。

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

次の図は、ワークフロー内のノード間の依存関係を示しています。依赖关系

オペレーションセンターページには、ワークフロー内の依存関係が表示されます。依赖关系

[xc_create] ノードを例に、コードエディターで DDL 文 CREATE TABLE xc_1 と CREATE TABLE xc_2 を記述し、スケジューリング設定パネルで [コードから入力と出力を解析] をクリックすると、システムによって [ノード出力名] セクションに 2 つの出力レコード (test.xc_1 と test.xc_2) が自動的に生成され、その方法は [コード解析] として表示されます。[サイクル間依存関係] セクションでは、[現在のノードのインスタンス]、[子ノードのインスタンス]、または [カスタムノードのインスタンス] を選択できます。

xc_select ノードのコードエディタには、SELECT * FROM xc_1; と SELECT * FROM xc_2; の 2 つの SQL 文が含まれています。 [コードから入力と出力を解析] 機能を使用すると、システムは test.xc_1 と test.xc_2 をこのノードの上流依存関係として自動的に識別します。これは、xc_select が xc_create ノードによって生成された 2 つのテーブルに依存することを意味します。

クロスサイクル依存:子ノード

ノードを、その下流ノードの前周期のインスタンスの正常な完了に依存させることができます。 たとえば、ノード A に下流ノード B、C、D がある場合、その現在のサイクルのインスタンスは、B、C、D の前周期のインスタンスがすべて正常に完了した後にのみ実行されます。

この依存関係は、ノードの現在の実行が、下流ノードが前周期に実行したデータクレンジングに依存する場合に使用します。 これらの下流ノードは、親ノードが前回の実行で生成した出力データをクレンジングします。 親ノードの現在のサイクルのインスタンスは、その下流ノードの前周期のインスタンスが正常に実行された場合にのみ開始されます。

xc_create ノードは、前周期の子ノードに依存するように設定されています。 [スケジューリング設定] パネルの下部にある [クロスサイクル依存 (旧称:前周期)] セクションで、[子ノードのインスタンス] チェックボックスを選択します。

オペレーションセンターページには、ノード間の依存関係が表示されます。依赖关系

クロスサイクル依存:現在のノード

ノードの現在のサイクルの実行は、自身の前周期のインスタンスの正常な完了に依存する場合があります。 前周期のインスタンスが失敗または未完了の場合、現在のサイクルのインスタンスの実行はブロックされます。

この依存関係は、現在のサイクルのデータクレンジングタスクが、前周期の同じタスクの結果に依存する場合に使用します。 この例では、依存関係を確認しやすくするために、ノードは時間単位のタスクとしてスケジューリングされます。

ノードの依存関係は、オペレーションセンター > 定期タスクの運用保守 > 定期インスタンス ページで確認します。

説明

時間単位のノードに自己依存 (クロスサイクル依存:現在のノード) が設定されており、前周期のインスタンスが正常に実行されなかった場合、このノードの次の時間単位のインスタンスは実行されません。

たとえば、ある日に時間単位のタスクの最初のインスタンスが失敗するか実行されなかった場合、その日の後続のすべての時間単位のインスタンスも実行されません。

クロスサイクル依存:カスタムノード

このシナリオでは、xc_create ノードのコードがノード 1000374815 によって生成された出力テーブルを使用しないにもかかわらず、ビジネスロジック上、ノード 1000374815 の前周期のインスタンスに依存します。

この依存関係は、ビジネスロジック上、別のノード (この場合はノード 1000374815) によって生成されたデータが必要ですが、現在のノード (xc_create) がそのデータを直接操作しない場合 (ノード 1000374815 の結果テーブルから選択するなど) に使用します。

xc_create ノードは、カスタムノード 1000374815 に依存するように設定されています。 [スケジューリング設定] パネルの [クロスサイクル依存] セクションで、[カスタムノードのインスタンス] を選択し、入力フィールドにノード ID 1000374815 を入力して、[追加] をクリックします。

ノードの依存関係は、オペレーションセンター > 定期タスクの運用保守 > 定期インスタンス ページで確認します。周期实例

クロスサイクル依存の詳細設定

2 つの下流パスを持つブランチノードを含むワークフローでは、通常、一方のパスのみが実行され、もう一方はドライランに設定されます。 このドライランステータスは、後続のすべての下流ノードに伝播します。 この動作を管理するために、DataWorks には 先祖ノードのドライランプロパティは、エポックをまたいで伝播されません。 オプションが用意されています。

ただし、ブランチパス内のノードに自己依存があり、そのブランチが選択されなかったために前周期のインスタンスがドライランに設定された場合、ノードが永続的にドライラン状態のままになってしまう可能性があります。

たとえば、左側のノードがドライランに設定されている場合、その下流ノードもドライランに設定されます。分支节点

ノードの次のサイクルの実行が、前周期のドライランステータスの影響を受けるのではなく、その同じサイクルのブランチロジックによって決定されるようにするには、次の手順に従います:

  1. ノード設定ページで、右側のパネルにある スケジューリング設定 をクリックします。

  2. [スケジューリング] セクションで、前のエポックに依存 を選択します。

  3. 詳細設定 をクリックします。

  4. 先祖ノードのドライランプロパティは、エポックをまたいで伝播されません。 を選択します。 タスクは、前周期のブランチノードのドライランステータスの影響を受けなくなります。 [クロスサイクル依存 (旧称:前周期)] セクションで、[現在のノードのインスタンス] を選択します。 [上流ノードのドライランステータスをスキップ] を [はい] に設定します。

説明

このオプションは、選択されなかったブランチノードから伝播されたドライランステータスにのみ適用されます。 通常のノードの前周期のインスタンスから継承されたドライランステータスには影響しません。

クロスサイクル依存の一般的なユースケース

  • ユースケース 1:

    • シナリオ:日次タスクが時間単位のタスクに依存しています。 24 個すべての時間単位のインスタンスが完了するのを待たずに、日次タスクをスケジュールされた時刻 12:00 に実行したい場合。

    • 解決策:前のエポックに依存 > このノード を選択して、上流の時間単位のタスクが自身の前のインスタンスに依存するように設定します。 下流の日次タスクを 12:00 に実行するように設定し、クロスサイクル依存は設定しません。

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

  • ユースケース 2:

    • シナリオ:日次タスクが、前日の時間単位のタスクによって生成されたデータに依存しています。

    • 解決策:下流の日次タスクで 前のエポックに依存 > カスタム を選択します。 次に、上流の時間単位のタスクのノード ID を入力します。

  • ユースケース 3:

    • シナリオ:時間単位のタスクが日次タスクに依存しています。 日次タスクが完了した後、スケジュールされた複数の実行時刻がすでに過ぎている可能性があり、複数のインスタンスが同時に開始されることがあります。 これを防ぐにはどうすればよいですか?

    • 解決策:前のエポックに依存 > このノード を選択して、下流の時間単位のタスクが自身の前のインスタンスに依存するように設定します。 これにより、時間単位のインスタンスが順次実行されるようになります。

  • ユースケース 4:

    • シナリオ:ノードが、自身の前周期で生成したデータに依存しています。 前周期のデータが準備できていることを確実にするにはどうすればよいですか?

    • 解決策:前のエポックに依存 > このノード を選択して、ノードが自身の前のインスタンスに依存するように設定します。