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

DataWorks:サイクル間のスケジューリング依存関係の設定

最終更新日:Jan 11, 2025

DataWorks では、ノードのサイクル間のスケジューリング依存関係を設定できます。現在のサイクルでノードに対して生成されたインスタンスを、前のサイクルで 1 つ以上の特定のノードに対して生成されたインスタンスに依存するように設定できます。現在のサイクルでノードに対して生成されたインスタンスは、ノードが依存する 1 つ以上の特定のノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。現在のサイクルでノードに対して生成されたインスタンスが前の日に別のノードに対して生成されたインスタンスのデータに依存する必要がある場合、または現在のサイクルで時間または分でスケジュールされたノードに対して生成されたインスタンスが前のサイクルで同じノードに対して生成されたインスタンスに依存する必要がある場合は、サイクル間のスケジューリング依存関係を設定できます。このトピックでは、ノードのサイクル間のスケジューリング依存関係を設定する方法と、サイクル間の依存関係のタイプについて説明します。

注意事項

サイクル間のスケジューリング依存関係を設定する場合は、次の表に記載されている項目に注意してください。
項目説明参照
サイクル間のスケジューリング依存関係の表示サイクル間のスケジューリング依存関係は、ノードの有向非巡回グラフ(DAG)では破線として表示されます。付録: DAG で提供される機能を使用する
サイクル間のスケジューリング依存関係の設定後に同じサイクルのスケジューリング依存関係を設定する必要があることの確認ノードのスケジューリング依存関係を設定すると、ノードはすべての祖先ノードが正常に実行された後にのみ実行を開始できます。

デフォルトでは、同じサイクルのスケジューリング依存関係の自動解析機能が有効になっています。ノードにサイクル間のスケジューリング依存関係が設定されている場合は、ノードに同じサイクルのスケジューリング依存関係が必要かどうかを確認する必要があります。ノードに同じサイクルのスケジューリング依存関係が必要ない場合は、ノードの実行への影響を防ぐために、自動的に生成された同じサイクルのスケジューリング依存関係を削除する必要があります。

スケジューリング依存関係の削除
サイクル間のスケジューリング依存関係が必要な複雑なシナリオ複雑なシナリオでは、同じサイクルのスケジューリング依存関係ではビジネス要件を満たせない場合があります。この場合、サイクル間のスケジューリング依存関係を設定できます。

たとえば、日でスケジュールされたノードが時間でスケジュールされたノードに依存する場合、日でスケジュールされたノードに対して生成されたインスタンスは、デフォルトで現在の日に時間でスケジュールされたノードに対して生成されたすべてのインスタンスに依存します。自己依存関係を時間でスケジュールされたノードに設定できます。このようにして、日でスケジュールされたノードに対して生成されたインスタンスは、特定のスケジューリングサイクルで時間でスケジュールされたノードに対して生成されたインスタンスに依存できます。

複雑な依存関係シナリオにおけるスケジューリング設定の原則とサンプル
ノードのスケジューリング依存関係のプレビュー本番環境で自動トリガーされたノードが期待どおりではないスケジューリング依存関係によって遅延するのを防ぐために、ノードを本番環境にデプロイする前にノードのスケジューリング依存関係をプレビューすることをお勧めします。これにより、自動トリガーされたノードに対して生成されたインスタンスが期待どおりに実行されるようになります。スケジューリング依存関係のプレビュー
ノードのデプロイノードのサイクル間のスケジューリング依存関係を設定した後、ノードとその祖先ノードを本番環境にデプロイする必要があります。デプロイが完了すると、本番環境のオペレーションセンターでサイクル間のスケジューリング依存関係を表示できます。ノードのデプロイ

サイクル間のスケジューリング依存関係の設定のエントリポイント

DataStudio で目的のノードの設定タブに移動します。右側のナビゲーションペインの [プロパティ] タブをクリックします。[依存関係] セクションの [前のサイクル] を選択し、ノードのスケジューリング依存関係を設定します。Scheduling dependencies

サイクル間のスケジューリング依存関係のタイプ

次の表に、サイクル間のスケジューリング依存関係のタイプを示します。
タイプ説明シナリオ
前のサイクルで現在のノードに対して生成されたインスタンスへの依存関係

現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。

現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。

前のサイクルでノードのレベル 1 の子孫ノードに対して生成されたインスタンスへの依存関係

現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで現在のノードの子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。

現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで現在のノードの出力テーブルデータが現在のノードの子孫ノードに対して生成されたインスタンスによってクレンジングされるかどうかに依存します。

前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存関係

現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。

現在のサイクルでノードに対して生成されたインスタンスは、ビジネスロジックでは前のサイクルで 1 つ以上の他のノードに対して生成されたインスタンスの出力テーブルデータに依存しますが、コードではデータを使用しません。

前のサイクルで現在のノードに対して生成されたインスタンスへの依存関係

現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。次の図は、スケジューリング依存関係の設定とインスタンス間の依存関係を示しています。Dependency on the instance generated for the current node in the previous cycle
説明 異なるスケジューリングサイクルで時間でスケジュールされたノードに対して生成されたインスタンスと、異なるスケジューリングサイクルで分でスケジュールされたノードに対して生成されたインスタンスの実行結果は、互いに影響を及ぼします。
日でスケジュールされたノード時間でスケジュールされたノードまたは分でスケジュールされたノードに依存する場合、日でスケジュールされたノードに対して生成されたインスタンスが実行を開始する時間は、時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されているかどうかに影響されます。
  • 時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されていない

    時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されていない場合、日でスケジュールされたノードに対して生成されたインスタンスは、現在の日に時間でスケジュールされたノードまたは分でスケジュールされたノードに対して生成されたすべてのインスタンスに依存します。この場合、日でスケジュールされたノードは、現在の日に時間でスケジュールされたノードまたは分でスケジュールされたノードに対して生成されたすべてのインスタンスのすべてのテーブルデータを集計して処理します。

  • 時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されている

    時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されている場合、日でスケジュールされたノードに対して生成されたインスタンスは、スケジューリング時間の近接性の原則に基づいて、時間でスケジュールされたノードまたは分でスケジュールされたノードに対して生成された特定のインスタンスのみに依存します。2 つのインスタンスのスケジューリング時間は最も近くなります。

詳細については、「付録: 複雑な依存関係シナリオ」をご参照ください。

前のサイクルでノードのレベル 1 の子孫ノードに対して生成されたインスタンスへの依存関係

このタイプのスケジューリング依存関係をノードに設定すると、現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルでノードのレベル 1 の子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
たとえば、ノード C には 2 つの子孫ノード(ノード A とノード B)があり、現在のサイクルでノード C に対して生成されたインスタンスは、前のサイクルでノード A とノード B に対して生成されたインスタンスに依存します。この例では、現在のサイクルは T、前のサイクルは T-1 です。現在のサイクルでノード C に対して生成されたインスタンスは、前のサイクルでノード A とノード B に対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。Dependency on the instances generated for the level-1 descendant nodes of a node in the previous cycle

前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存関係

このタイプのスケジューリング依存関係をノードに設定すると、現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
たとえば、ノード C には 2 つの子孫ノード(ノード A とノード B)があり、現在のサイクルでノード B に対して生成されたインスタンスは、前のサイクルでノード D に対して生成されたインスタンスに依存します。この例では、現在のサイクルは T、前のサイクルは T-1 です。現在のサイクルでノード B に対して生成されたインスタンスは、前のサイクルでノード D に対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。Dependency on the instances generated for one or more specified nodes in the previous cycle

祖先ノードのドライラン属性の受け渡し

ほとんどの場合、分岐ノードを使用する場合は、この設定を行う必要があります。
  • エントリポイント
    ノードの [アップストリームのエアランニング属性に従う] パラメーターを [いいえ] に設定できます。このようにして、ノードおよびノードの子孫ノードに対して生成されたすべてのインスタンスは、通常どおり実行できます。Pass the dry-run attribute of an ancestor node
  • シナリオ

    ノードには複数の子孫ノードがあります。ノードが実行されると、子孫ノードのステータスはドライランになります。現在のサイクルでドライランの子孫ノードに対して生成されたインスタンスを前のサイクルでドライランの子孫ノードに対して生成されたインスタンスに依存するように設定すると、ノードのドライラン属性はドライランノードの子孫ノードに渡されます。この場合、ドライランノードおよびドライランノードの子孫ノードに対して生成されたすべてのインスタンスはドライランになります。ドライラン属性を渡したくない場合は、[プロパティ] タブの [依存関係] セクションで、ドライランの子孫ノードの [アップストリームのエアランニング属性に従う] パラメーターを [いいえ] に設定できます。

    • Assign_Node は割り当てノードです。Branch_Node は分岐ノードです。Shell_Node1 と Shell_Node2 は Branch_Node の子孫ノードです。これらのノードはすべて日でスケジュールされています。
    • Shell_Node1 はドライランであり、Shell_Node2 は通常どおり実行されます。
    • 現在のサイクルで Shell_Node1 に対して生成されたインスタンスは、前のサイクルで Shell_Node1 に対して生成されたインスタンスに依存するように設定されています。
    • Shell_Node1 は、現在のサイクル(T)で自動トリガーされたインスタンス Shell_Node1' を生成します。
    • Shell_Node1 は、前のサイクル(T-1)で自動トリガーされたインスタンス Shell_Node1 を生成します。
    ExampleShell_Node1' インスタンスは Shell_Node1 インスタンスに依存します。Shell_Node1 ノードのドライラン属性が渡されます。したがって、Shell_Node1 ノードおよび Shell_Node1 ノードの子孫ノードに対して生成されたすべてのインスタンスはドライランになります。

スケジューリング依存関係のプレビュー

ノードのスケジューリング依存関係を設定した後、スケジューリング依存関係をプレビューできます。詳細については、「後続の手順: スケジューリング依存関係が期待どおりかどうかを確認する」をご参照ください。