DataWorks では、ノードに対してサイクルをまたぐスケジューリング依存関係を構成できます。 現在のサイクルでノードに対して生成されたインスタンスを、前のサイクルで 1 つ以上の特定のノードに対して生成されたインスタンスに依存するように構成できます。 現在のサイクルでノードに対して生成されたインスタンスは、ノードが依存する 1 つ以上の特定のノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 現在のサイクルでノードに対して生成されたインスタンスが前の日に別のノードに対して生成されたインスタンスのデータに依存する必要がある場合、または現在のサイクルで時間または分でスケジュールされたノードに対して生成されたインスタンスが前のサイクルで同じノードに対して生成されたインスタンスに依存する必要がある場合は、サイクルをまたぐスケジューリング依存関係を構成できます。 このトピックでは、ノードに対してサイクルをまたぐスケジューリング依存関係を構成する方法と、サイクルをまたぐスケジューリング依存関係のタイプについて説明します。
注意事項
サイクルをまたぐスケジューリング依存関係を構成する場合は、次の表に記載されている項目に注意してください。
項目 | 説明 | 参照 |
サイクルをまたぐスケジューリング依存関係の表示 | サイクルをまたぐスケジューリングの依存関係は、ノードの有向非循環グラフ(DAG)で破線として表示されます。 | 詳細については、「付録:DAG で提供される機能を使用する」をご参照ください。 |
サイクルをまたぐスケジューリング依存関係の構成後に、同じサイクルのスケジューリング依存関係を構成する必要があることの確認 | ノードのスケジューリング依存関係を構成した後、ノードはすべての先祖ノードが正常に実行された後にのみ実行を開始できます。 デフォルトでは、同じサイクルのスケジューリング依存関係の自動解析機能が有効になっています。 ノードに対してサイクルをまたぐスケジューリング依存関係が構成されている場合は、ノードに同じサイクルのスケジューリング依存関係が必要かどうかを確認する必要があります。 ノードに同じサイクルのスケジューリング依存関係が必要ない場合は、ノードの実行への影響を防ぐために、自動的に生成された同じサイクルのスケジューリング依存関係を削除する必要があります。 | 詳細については、「スケジューリング依存関係タイプの選択(同じサイクルのスケジューリング依存関係)」をご参照ください。 |
サイクルをまたぐスケジューリング依存関係が必要な複雑なシナリオ | 複雑なシナリオでは、同じサイクルのスケジューリング依存関係ではビジネス要件を満たせない場合があります。 この場合、サイクルをまたぐスケジューリング依存関係を構成できます。 たとえば、日でスケジュールされたノードが時間でスケジュールされたノードに依存する場合、日でスケジュールされたノードに対して生成されたインスタンスは、デフォルトで現在の日に時間でスケジュールされたノードに対して生成されたすべてのインスタンスに依存します。 | 詳細については、「複雑な依存関係シナリオにおけるスケジューリング構成の原則とサンプル」をご参照ください。 |
ノードのスケジューリング依存関係のプレビュー | 本番環境で自動トリガーされるノードが、期待どおりではないスケジューリング依存関係によって遅延されるのを防ぐために、ノードを本番環境にデプロイする前に、ノードのスケジューリング依存関係をプレビューすることをお勧めします。 これにより、自動トリガーされるノードに対して生成されたインスタンスが期待どおりに実行されるようになります。 | 詳細については、「付録:DAG で提供される機能を使用する」をご参照ください。 |
ノードのデプロイ | ノードに対してサイクルをまたぐスケジューリング依存関係を構成した後、ノードとその先祖ノードを本番環境にデプロイする必要があります。 デプロイが完了すると、本番環境のオペレーションセンターでサイクルをまたぐスケジューリング依存関係を表示できます。 | 詳細については、「ノードまたはワークフローをデプロイする」をご参照ください。 |
エントリポイント
Data Studio で目的のノードの構成タブに移動します。 右側の[ナビゲーションウィンドウ]で[プロパティ]タブをクリックします。 表示されるタブの[スケジューリングの依存関係]セクションで、[依存関係の追加] をクリックし、[依存関係タイプ] パラメーターを [サイクルをまたぐ依存関係] に設定し、ノード名、出力名、またはスケジューリングタスク ID でノードを検索し、ビジネス要件に基づいて現在のノードの先祖ノードとしてノードを追加します。
サイクルをまたぐスケジューリング依存関係タイプ
依存関係タイプ | 説明 | シナリオ |
前のサイクルで現在のノードに対して生成されたインスタンスへの依存関係 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。 |
前のサイクルで現在のノードのレベル 1 子孫ノードに対して生成されたインスタンスへの依存関係 | 現在のサイクルで現在のノードに対して生成されたインスタンスは、前のサイクルで現在のノードの子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 | 現在のサイクルで現在のノードに対して生成されたインスタンスは、前のサイクルで現在のノードの出力テーブルデータが、前のサイクルで現在のノードの子孫ノードに対して生成されたインスタンスによってクレンジングされるかどうかに依存します。 |
前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存関係 | 現在のサイクルで現在のノードに対して生成されたインスタンスは、前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 | 現在のサイクルで現在のノードに対して生成されたインスタンスは、ビジネスロジックに基づいて前のサイクルで 1 つ以上の他のノードに対して生成されたインスタンスの出力テーブルデータに依存しますが、コード内のデータは使用しません。 |
前のサイクルで現在のノードに対して生成されたインスタンスへの依存関係
現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。 次の依存関係を確認します。
現在のサイクルで時間単位でスケジュールされたノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスに依存します。
現在のサイクルで日単位でスケジュールされたノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスに依存します。
スケジューリング依存関係の構成:
Data Studio でノード A の構成タブに移動します。 右側の[ナビゲーションウィンドウ]で[プロパティ]タブをクリックします。 表示されるタブで[スケジューリングの依存関係]をクリックします。
[ノードの依存関係] セクションで、[依存関係の追加]をクリックします。 表示される[フォーム]で、次の設定を構成します。
[依存関係タイプ] パラメーターを [サイクルをまたぐ自己依存関係] に設定します。 [追加] をクリックして、前のサイクルでノード A に対して生成されたインスタンスを現在のノードの先祖依存関係として追加します。
[保存] をクリックして、スケジューリング依存関係の構成を保存します。
異なるスケジューリングサイクルで時間単位でスケジュールされたノードに対して生成されたインスタンスの実行結果と、異なるスケジューリングサイクルで日単位でスケジュールされたノードに対して生成されたインスタンスの実行結果は、互いに影響を及ぼします。
日単位でスケジュールされたノードが時間または分単位でスケジュールされたノードに依存する場合、日単位でスケジュールされたノードに対して生成されたインスタンスの実行開始時刻は、時間または分単位でスケジュールされたノードに自己依存関係が構成されているかどうかの影響を受けます。
時間または分単位でスケジュールされたノードに自己依存関係が構成されていない場合
時間または分単位でスケジュールされたノードに自己依存関係が構成されていない場合、日単位でスケジュールされたノードに対して生成されたインスタンスは、現在の日に時間または分単位でスケジュールされたノードに対して生成されたすべてのインスタンスに依存します。 この場合、日単位でスケジュールされたノードは、現在の日に時間または分単位でスケジュールされたノードに対して生成されたすべてのインスタンスのすべてのテーブルデータを集計および処理します。
時間または分単位でスケジュールされたノードに自己依存関係が構成されている場合
時間または分単位でスケジュールされたノードに自己依存関係が構成されている場合、日単位でスケジュールされたノードに対して生成されたインスタンスは、スケジューリング時間の近接性の原則に基づいて、時間または分単位でスケジュールされたノードに対して生成された特定のインスタンスのみに依存します。 2 つのインスタンスのスケジューリング時間は最も近くなります。
詳細については、「付録 1:複雑な依存関係シナリオ」をご参照ください。
前のサイクルで現在のノードのレベル 1 子孫ノードに対して生成されたインスタンスへの依存関係
ノードに対してこのタイプのスケジューリング依存関係を構成すると、現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルでノードのレベル 1 子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
スケジューリング依存関係の構成:
Data Studio でノード C の構成タブに移動します。 右側の[ナビゲーションウィンドウ]で[プロパティ]タブをクリックします。 表示されるタブで[スケジューリングの依存関係]をクリックします。
[ノードの依存関係] セクションで、[依存関係の追加]をクリックします。 表示される[フォーム]で、次の設定を構成します。
[依存関係タイプ] パラメーターを [レベル 1 子孫ノードへのサイクルをまたぐ依存関係] に設定します。 システムは、現在のノードの構成タブの最新のコードに基づいて、現在のノードが依存する必要のあるノードを自動的に検索します。 ノード A とノード B を現在のノードの先祖ノードとして選択する必要があります。
[保存] をクリックして、スケジューリング依存関係の構成を保存します。
フローチャートの説明:
インスタンス C1 の説明:
データ処理:インスタンス C1 は、T-2 パーティションのインスタンス A とインスタンス B の出力テーブルのデータを処理します。
データ出力:インスタンス C1 は、T-1 パーティションのテーブル C1 にデータを生成します。
インスタンス A1 とインスタンス B1 の説明:
データ処理:インスタンス A1 とインスタンス B1 は、T-1 日のインスタンス C1 の出力テーブルのデータを処理します。
データ出力:インスタンス A1 とインスタンス B1 は、T-1 日のテーブル A1 とテーブル B1 にデータを生成します。
インスタンス C2 の説明:
データ処理:インスタンス C2 は、T-1 パーティションのインスタンス A1 とインスタンス B1 の出力テーブルのデータを処理します。
データ出力:インスタンス C2 は、T パーティションのテーブル C2 にデータを生成します。
インスタンス A2 とインスタンス B2 の説明:
データ処理:インスタンス A2 とインスタンス B2 は、T 日のインスタンス C2 の出力テーブルのデータを処理します。
データ出力:インスタンス A2 とインスタンス B2 は、T 日のテーブル A2 とテーブル B2 にデータを生成します。
前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存関係
ノードに対してこのタイプのスケジューリング依存関係を構成すると、現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
スケジューリング依存関係の構成:
Data Studio でノード B の構成タブに移動します。 右側の[ナビゲーションウィンドウ]で[プロパティ]タブをクリックします。 表示されるタブで[スケジューリングの依存関係]をクリックします。
[ノードの依存関係] セクションで、[依存関係の追加]をクリックします。 表示される[フォーム]で、次の設定を構成します。
[依存関係タイプ] パラメーターを [サイクルをまたぐ依存関係] に設定します。
[先祖オブジェクト]:パラメーターを [名前] に設定し、ノード A、ノード B、ノード C によって形成されるワークフローに属さないノード D を選択します。
ノード D をノード B の先祖ノードとして選択します。
フローチャートの説明:ノード C には 2 つの子孫ノード(ノード A とノード B)があり、現在のサイクルでノード B に対して生成されたインスタンスは、前のサイクルでノード D に対して生成されたインスタンスに依存します。 この例では、現在のサイクルは T で、前のサイクルは T-1 です。 現在のサイクルでノード B に対して生成されたインスタンスは、前のサイクルでノード D に対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
スケジューリング依存関係のプレビュー
ノードのスケジューリング依存関係を構成した後、スケジューリング依存関係をプレビューできます。 詳細については、「後続の手順:スケジューリング依存関係が期待どおりであることを確認する」をご参照ください。