クロスサイクルスケジューリング依存関係により、ノードの現在のサイクルインスタンスは、開始する前に前のサイクルの1つ以上のインスタンスが成功するのを待ちます。この依存関係タイプは、ノードが以前のスケジューリングサイクルで生成されたデータを必要とする場合に使用します。たとえば、日次ノードが前日の出力を必要とする場合や、時間単位ノードが自身のサイクルを順次処理する必要がある場合などです。
クロスサイクル依存関係と同一サイクル依存関係は、異なる目的で使用されます。同一サイクル依存関係は、単一のスケジューリング実行内での実行順序 (上流から下流へ) を制御します。クロスサイクル依存関係は、前のサイクル実行が成功するまでノードが開始できるかどうかを制御します。デフォルトでは、同一サイクルスケジューリング依存関係の自動解析機能が有効になっています。クロスサイクル依存関係を設定した後、自動生成された同一サイクル依存関係がまだ必要かどうかを確認してください。不要な場合は削除しないと、ノードが予期せずブロックされる可能性があります。
クロスサイクル依存関係は、ノードの有向非循環グラフ (DAG) で破線として表示されます。設定後、ノードとその先祖ノードを本番環境にデプロイして、オペレーションセンターで依存関係を表示します。
クロスサイクル依存関係タイプ
DataWorks は、3つのクロスサイクル依存関係タイプを提供しています。
| 依存関係タイプ | 使用ケース |
|---|---|
| 自己依存 — 現在のノードの前のサイクルインスタンス | ノードが自身のサイクルを順次処理する必要がある場合。現在のサイクルインスタンスは、同じノードの前のサイクル実行からのデータを必要とします。 |
| レベル1子孫依存関係 — レベル1子孫ノードの前のサイクルインスタンス | 現在のサイクルインスタンスが、自身の前のサイクル出力テーブルデータがレベル1子孫ノードによってすでにクレンジングされていることを確認する必要がある場合。 |
| 指定ノード依存関係 — 1つ以上の指定ノードの前のサイクルインスタンス | 現在のサイクルのインスタンスは、ビジネスロジックに基づいて他のノードの前サイクルの出力に依存しており、その依存関係はコードには表現されていません。 |
クロスサイクル依存関係の追加
Data Studio で、設定するノードの構成タブを開きます。右側のパネルで、[プロパティ] タブをクリックし、[スケジューリング依存関係] > [ノード依存関係] > [依存関係の追加] の順に進みます。[依存関係タイプ] を適切なクロスサイクルオプションに設定し、名前、出力名、またはスケジューリングタスク ID で先祖ノードを検索して、[追加] をクリックします。
すべての依存関係を追加した後、[保存] をクリックします。
自己依存
自己依存は、現在のサイクルインスタンスが前のサイクルで同じノードによって生成された最新データに依存する場合に使用します。これにより、ノードのサイクルが順次実行され、各サイクルは前のサイクルが成功した後にのみ開始されます。
スケジュールタイプ別の動作:
-
時間単位ノード: 現在の時間単位インスタンスは、前の時間単位インスタンスが成功するのを待ちます。
-
日次ノード: 現在の日次インスタンスは、前の日次インスタンスが成功するのを待ちます。
自己依存の構成:
-
Data Studio でノード A の構成タブを開き、[プロパティ] タブをクリックし、次に [スケジューリング依存関係] をクリックします。
-
[ノード依存関係] セクションで、[依存関係を追加] をクリックします。[依存関係タイプ] を [クロスサイクル自己依存関係] に設定し、[追加] をクリックします。DataWorks は、Node A の前サイクルインスタンスを祖先依存関係として追加します。
-
[保存] をクリックします。
異なるスケジューリングサイクルで時間単位でスケジュールされたノードに対して生成されたインスタンスの実行結果と、異なるスケジューリングサイクルで日次でスケジュールされたノードに対して生成されたインスタンスの実行結果は、互いに影響し合います。
依存する日次ノードに対する自己依存の影響:
日次ノードが時間単位または分単位ノードに依存する場合、時間単位または分単位ノードで自己依存が有効になっているかどうかによって、日次ノードが待機するインスタンスが変わります。
-
自己依存のない時間単位/分単位ノード: 日次ノードは、現在の日の*すべて*の時間単位または分単位インスタンスを待ちます。これは、日次ノードがその日のすべてのデータを集計する場合に使用します。
-
自己依存のある時間単位/分単位ノード: 日次ノードは、スケジューリング時間の近接性の原則に基づいて、日次ノードのスケジューリング時間に最も近い*特定の1つ*の時間単位または分単位インスタンスにのみ依存します。
詳細については、「複雑な依存関係シナリオ」をご参照ください。
レベル1子孫依存関係
この依存関係タイプは、現在のサイクルインスタンスが、自身の前のサイクル出力テーブルデータが再度実行される前にレベル1子孫ノードによってすでにクレンジングされていることを確認する必要がある場合に使用します。
現在のサイクルインスタンスは、開始する前にレベル1子孫ノードの前のサイクルインスタンスが成功するのを待ちます。
依存関係チェーンの仕組み (ノード A、B、C の例):
| インスタンス | 読み取り元 | 書き込み先 |
|---|---|---|
| インスタンス C1 (T-2 サイクル) | T-2 パーティション内のインスタンス A および B の出力テーブル | T-1 パーティション内のテーブル C1 |
| インスタンス A1 および B1 (T-1 サイクル) | T-1 のインスタンス C1 の出力テーブル | T-1 のテーブル A1 および B1 |
| インスタンス C2 (T-1 サイクル) — A1 および B1 が成功した後にのみ開始 | T-1 パーティション内のインスタンス A1 および B1 の出力テーブル | T パーティション内のテーブル C2 |
| インスタンス A2 および B2 (T サイクル) | T のインスタンス C2 の出力テーブル | T のテーブル A2 および B2 |
レベル1子孫依存関係の構成:
-
DataStudio で、ノード C の構成タブを開きます。[プロパティ] タブをクリックし、[スケジューリング依存関係] をクリックします。
-
「ノード依存関係」セクションで、「依存関係の追加」をクリックします。「依存関係の種類」を、「レベル 1 の子孫ノードに対するクロスサイクル依存関係」に設定します。DataWorks は、最新のコードに基づいて候補となる先祖ノードを自動的に特定します。「ノード A およびノード B」を先祖ノードとして選択します。
-
[保存] をクリックします。
指定ノード依存関係
この依存関係タイプは、現在のサイクルインスタンスが、ビジネスロジックに基づいて別のノードの前のサイクル出力に依存しており、その依存関係がコードに反映されていない場合に使用します。
現在のサイクルインスタンスは、開始する前に1つ以上の指定ノードの前のサイクルインスタンスが成功するのを待ちます。
例: ノード C には、2つの子孫ノード A と B があります。現在のサイクル (T) のノード B は、ノード D の前のサイクルインスタンス (T-1) が成功するのを待つ必要があります。ノード D は、ノード A、B、C によって形成されるワークフローの外部にあります。
指定ノード依存関係の構成:
-
DataStudio でノード B の構成タブを開き、[プロパティ] タブをクリックし、次に [スケジューリング依存関係] をクリックします。
-
「[ノード依存関係]」セクションで、「[依存関係の追加]」をクリックします。以下の設定を行います:
-
[依存関係タイプ]: クロスサイクル依存関係
-
祖先オブジェクト: 名前 — [Node D] を選択します。
-
-
Node D を Node B の先祖ノードとして選択し、[保存] をクリックします。
次のステップ
本番環境にデプロイする前に、スケジューリング依存関係をプレビューして、期待どおりに動作することを確認してください。詳細については、「付録: DAG で提供される機能の使用」および「スケジューリング依存関係が期待どおりか確認する」をご参照ください。
関連トピック: