DataWorks では、ノードに対して周期をまたぐスケジューリング依存関係を設定できます。現在のスケジューリング周期でノードに対して生成されたインスタンスが、前周期の 1 つ以上の特定のノードに対して生成されたインスタンスに依存するように設定できます。現在の周期でノードに対して生成されたインスタンスは、依存する 1 つ以上の特定のノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。現在の周期でノードに対して生成されたインスタンスが、前日に別のノードに対して生成されたインスタンスのデータに依存する必要がある場合、または現在の周期で時間単位または分単位でスケジューリングされたノードに対して生成されたインスタンスが、前周期の同じノードに対して生成されたインスタンスに依存する必要がある場合は、周期をまたぐスケジューリング依存関係を設定できます。このトピックでは、ノードの周期をまたぐスケジューリング依存関係の設定方法と、周期をまたぐスケジューリング依存関係のタイプについて説明します。
注意事項
周期をまたぐスケジューリング依存関係を設定する際は、次の表で説明する項目にご注意ください。
|
項目 |
説明 |
リファレンス |
|
周期をまたぐスケジューリング依存関係の表示 |
周期をまたぐスケジューリング依存関係は、ノードの有向非循環グラフ (DAG) に破線で表示されます。 |
|
|
周期をまたぐスケジューリング依存関係を設定した後の、同一周期のスケジューリング依存関係の設定要件の確認 |
ノードにスケジューリング依存関係を設定すると、そのノードはすべての先祖ノードが正常に実行された後にのみ実行を開始できます。 デフォルトでは、同一周期のスケジューリング依存関係の自動解析機能が有効になっています。ノードに周期をまたぐスケジューリング依存関係が設定されている場合、そのノードに同一周期のスケジューリング依存関係が必要かどうかを確認する必要があります。必要ない場合は、ノードの実行に影響が出ないように、自動生成された同一周期のスケジューリング依存関係を削除する必要があります。 |
|
|
周期をまたぐスケジューリング依存関係が必要となる複雑なシナリオ |
一部の複雑なシナリオでは、同一周期のスケジューリング依存関係ではビジネス要件を満たせない場合があります。この場合、周期をまたぐスケジューリング依存関係を設定できます。 たとえば、日次でスケジューリングされるノードが時間単位でスケジューリングされるノードに依存する場合、デフォルトでは、日次でスケジューリングされるノードに対して生成されたインスタンスは、当日に時間単位でスケジューリングされるノードに対して生成されたすべてのインスタンスに依存します。 |
|
|
ノードのスケジューリング依存関係のプレビュー |
本番環境で自動トリガーされるノードが、想定外のスケジューリング依存関係によって遅延するのを防ぐため、ノードを本番環境にデプロイする前に、ノードのスケジューリング依存関係をプレビューすることを推奨します。これにより、自動トリガーされるノードに対して生成されたインスタンスが期待どおりに実行されることを保証できます。 |
|
|
ノードのデプロイメント |
ノードに周期をまたぐスケジューリング依存関係を設定した後、そのノードと先祖ノードを本番環境にデプロイする必要があります。デプロイメントが完了すると、本番環境のオペレーションセンターで周期をまたぐスケジューリング依存関係を表示できます。 |
エントリポイント
Data Studio のノード編集ページに移動します。右側のナビゲーションウィンドウで、Add Dependency をクリックします。[スケジューリング依存関係] タブで、[コードから I/O を解析] をクリックしてシステムに依存関係を提案させるか、[依存関係の追加] をクリックして手動で設定できます。依存関係を追加する際、[依存関係タイプ] ドロップダウンリストには、[同一周期の依存関係]、[周期をまたぐ依存関係]、[周期をまたぐ自己依存]、[周期をまたぐレベル 1 子孫ノードへの依存関係] の 4 つのオプションがあります。依存関係タイプを選択し、[先祖オブジェクト] を設定して、[追加] をクリックすると設定が完了します。
周期をまたぐスケジューリング依存関係のタイプ
|
依存関係タイプ |
説明 |
シナリオ |
|
前周期の現在のノードに対して生成されたインスタンスへの依存 |
現在の周期のノードに対して生成されたインスタンスは、前周期の同じノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 |
現在の周期のノードに対して生成されたインスタンスは、前周期の同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。 |
|
前周期の現在のノードのレベル 1 子孫ノードに対して生成されたインスタンスへの依存 |
現在の周期の現在のノードに対して生成されたインスタンスは、前周期の現在のノードの子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 |
現在の周期の現在のノードに対して生成されたインスタンスは、前周期の現在のノードの出力テーブルデータが、前周期の現在のノードの子孫ノードに対して生成されたインスタンスによってクレンジングされたかどうかに依存します。 |
|
前周期の 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存 |
現在の周期の現在のノードに対して生成されたインスタンスは、前周期の 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 |
現在の周期の現在のノードに対して生成されたインスタンスは、ビジネスロジックに基づいて前周期の他の 1 つ以上のノードに対して生成されたインスタンスの出力テーブルデータに依存しますが、コード内でそのデータは使用しません。 |
前周期の現在のノードに対して生成されたインスタンスへの依存
現在の周期のノードに対して生成されたインスタンスは、前周期の同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。次の依存関係を確認してください:
-
現在の周期で時間単位でスケジューリングされるノードに対して生成されたインスタンスは、前周期の同じノードに対して生成されたインスタンスに依存します。
-
現在の周期で日次でスケジューリングされるノードに対して生成されたインスタンスは、前周期の同じノードに対して生成されたインスタンスに依存します。
スケジューリング依存関係の設定:
-
Data Studio でノード A の設定タブに移動します。右側のナビゲーションウィンドウで [プロパティ] タブをクリックし、表示されるタブで [スケジューリング依存関係] をクリックします。
-
[ノード依存関係] セクションで、[依存関係の追加] をクリックします。表示されるフォームで、次の設定を行います:
[依存関係タイプ] ドロップダウンリストから [周期をまたぐ自己依存] を選択します。Add ボタンをクリックして、ノード 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 の出力テーブルのデータを処理します。
-
データ出力:T パーティションにテーブル C2 のデータを生成します。
-
-
インスタンス A2 と B2 の説明:
-
処理対象:T 日のインスタンス C2 の出力テーブルのデータ。
-
データ出力:インスタンス A2 と B2 は、T 日にテーブル A2 と B2 のデータを生成します。
-
-
前周期の 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存
ノードにこのタイプのスケジューリング依存関係を設定した場合、現在の周期でノードに対して生成されたインスタンスは、前周期で 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
-
スケジューリング依存関係の設定:
-
Data Studio でノード B の設定タブに移動します。右側のナビゲーションウィンドウで [プロパティ] タブをクリックし、表示されるタブで [スケジューリング依存関係] をクリックします。
-
[ノード依存関係] セクションで、[依存関係の追加] をクリックします。表示されるフォームで、次の設定を行います:
-
[依存関係タイプ] パラメーターを [周期をまたぐ依存関係] に設定します。
-
先祖オブジェクト:パラメーターを [名前] に設定し、ノード A、B、C で構成されるワークフローに属さないノード D を選択します。
-
-
ノード B の先祖ノードとしてノード D を選択します。
-
-
フローチャートの説明:ノード C にはノード A とノード B の 2 つの子孫ノードがあり、現在の周期でノード B に対して生成されたインスタンスは、前周期でノード D に対して生成されたインスタンスに依存します。この例では、現在の周期は T で、前周期は T-1 です。現在の周期でノード B に対して生成されたインスタンスは、前周期でノード D に対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
スケジューリング依存関係のプレビュー
ノードにスケジューリング依存関係を設定した後、スケジューリング依存関係をプレビューできます。詳細については、「次のステップ:依存関係の検証」をご参照ください。