クロスサイクルスケジューリング依存関係により、ノードの現在のインスタンスは、前のスケジューリングサイクルのインスタンスが成功した後にのみ実行されます。これは、日次タスクが前日のデータを必要とする場合や、時間単位または分単位のタスクが前のインスタンスに依存する場合に有用です。このトピックでは、これらの依存関係を設定する方法について説明します。
注意事項
クロスサイクルスケジューリング依存関係を設定する前に、次の点に注意してください。
|
項目 |
説明 |
参照先 |
|
クロスサイクル依存関係の表示 |
DataWorks の DAG では、破線 がクロスサイクルスケジューリング依存関係を表します。 |
|
|
設定後の同一サイクル依存関係の確認 |
依存関係を設定した後、子孫ノードは、すべての先祖ノードが完了した後にのみ実行されます。 同一サイクル依存関係は自動的に解析されます。クロスサイクル依存関係を設定した後、同一サイクル依存関係が依然として必要かどうかを確認してください。不要な場合は、自動生成された依存関係を削除して、子孫ノードが正しく実行されるようにしてください。 |
|
|
複雑なシナリオでの使用 |
同一サイクル依存関係では要件を満たせない場合、クロスサイクルスケジューリング依存関係を設定する必要がある場合があります。 たとえば、日次タスクはデフォルトで時間単位タスクのすべてのインスタンスに依存します。時間単位タスクに 自己依存 を設定することで、日次タスクが特定のサイクルのインスタンスに依存するように設定できます。 |
|
|
ノード依存関係のプレビュー |
タスクをデプロイする前に、その依存関係をプレビューして、インスタンスの関係が正しいことを確認してください。これにより、設定ミスによる本番環境でのスケジューリング遅延を防ぐことができます。 |
|
|
タスクのデプロイ |
クロスサイクルスケジューリング依存関係の先祖ノードと子孫ノードの両方を本番環境にデプロイしてください。その後、オペレーションセンターで依存関係を確認できます。 |
設定のエントリポイント
DataStudio のノードエディターページで、右側のナビゲーションペインにあるScheduling Settingsをクリックします。セクションで、Previous Cycle領域に移動して、ノードの依存関係を設定します。
依存関係のタイプ
次の表に、サポートされているクロスサイクルスケジューリング依存関係のタイプを示します。
|
依存関係のタイプ |
ノードの依存関係 |
ビジネスシナリオ |
|
ノードの現在のインスタンスは、前サイクルの自身のインスタンスが成功した後にのみ実行されます。 |
ノードの現在のインスタンスは、前サイクルの自身のインスタンスによって生成されたデータに依存します。 |
|
|
ノードの現在のインスタンスは、前サイクルの子孫ノードが成功した後にのみ実行されます。 |
現在のインスタンスは、自身の前サイクルの出力テーブルからのデータが、前サイクルの子孫ノードによって正常に処理されたかどうかに依存します。 |
|
|
ノードの現在のインスタンスは、前サイクルの他の指定されたノードのインスタンス結果に依存します。現在のインスタンスは、前サイクルの指定されたノードが成功した後にのみ実行されます。 |
現在のインスタンスは、別のビジネスプロセスからのデータとビジネスロジック上の依存関係がありますが、ノードのコードはそのデータを直接参照していません。 |
自己依存
ノードの現在のインスタンスは、前サイクルの自身のインスタンスによって生成されたデータに依存します。次の図に、依存関係の設定とその結果生じる関係の例を示します。
日次タスクが 時間単位タスクまたは 分単位タスクに依存する場合、時間単位または分単位タスクに自己依存を設定するかどうかが、日次タスクの実行時間に影響します。
-
自己依存のない時間単位または分単位タスク
日次タスクは、デフォルトで当日の時間単位または分単位タスクのすべてのインスタンスに依存します。日次タスクは、その日に時間単位または分単位タスクによって生成されたすべてのテーブルデータを集約して処理します。
-
自己依存のある時間単位または分単位タスク
日次タスクは、近接性の原則に基づいて、当日のすべてのインスタンスではなく、時間単位または分単位タスクの最も近いインスタンスに依存します。
特定の依存関係シナリオの詳細については、「付録: 複雑な依存関係シナリオのまとめ」をご参照ください。
自己依存を持つタスクのデータバックフィルを実行すると、そのインスタンスは時系列順に実行されます。詳細については、「自己依存タスクのデータバックフィル動作」をご参照ください。
レベル 1 の子孫ノードへの依存
ノードの現在のインスタンスは、前サイクルの子孫ノードの処理結果に依存します。この依存関係は、ノード自身の前サイクルのデータが、子孫によって正常に処理されたことを保証します。
たとえば、ノード C には 2 つの子孫ノード A と B があります。レベル 1 の子孫ノードへの依存とは、ノード C が前サイクル (図の T-1) のノード A とノード B の結果に依存することを意味します。ノード C の現在のインスタンス (T) は、前サイクルのノード A とノード B の両方のインスタンスが成功した後にのみ実行されます。
他のノードへの依存
ノードの現在のインスタンスは、前サイクルの他の指定されたノードのインスタンスが成功した後にのみ実行されます。
たとえば、ノード A とノード B は、ある別のノードの 2 つの子孫ノードです。他のノードへの依存が設定され、ノード B が前サイクル (図の T-1) のノード D の結果に依存するようになっています。ノード B の現在のインスタンス (T) は、前サイクルのノード D のインスタンスが成功した後にのみ実行されます。
ドライラン属性の継承
この設定は、主にブランチノードで使用されます。
-
設定のエントリポイント
スケジューリング依存関係設定では、Skip the dry-run property of the ancestor node オプションを Yes に設定できます。これにより、子孫ノードは、その祖先ノードの前回のサイクルでのドライラン属性を継承しなくなります。
-
使用例
ノードには複数の子孫ノードがあります。タスクの実行中に、一部の子孫ブランチが空実行状態に設定されることがあります。空実行状態の子孫ノードに自己依存も設定されている場合、後続のインスタンスに空実行の属性が渡され、永続的な空実行状態になります。この継承を防ぐには、Skip the dry-run property of the ancestor node を Yes に設定します。
-
[例]
-
Assign_Node が代入ノード、Branch_Node がブランチノード、Shell_Node1 と Shell_Node2 が Branch_Node の子孫ノードであるとします。すべて日次タスクです。
-
実行中、Shell_Node1 はドライランに設定され、Shell_Node2 は正常に実行されます。
-
Shell_Node1 ノードには、前サイクルに対する自己依存が設定されています。
-
現在のサイクル (T) で生成された Shell_Node1 のインスタンスは、
Shell_Node1'という名前です。 -
前サイクル (T-1) で生成された Shell_Node1 のインスタンスは、
Shell_Node1という名前です。
現在のサイクル (T) のインスタンス Shell_Node1'は、前サイクル (T-1) のインスタンスShell_Node1に依存します。「先祖ノードのドライラン属性をスキップ」を有効にしていない場合、新しいインスタンスは前のインスタンスからドライラン属性を継承し、Shell_Node1 ノードが永続的なドライラン状態のままになります。 -
スケジューリング依存関係のプレビュー
依存関係を設定した後、依存関係をプレビューできます。詳細については、「次のステップ: 依存関係が期待どおりであることを確認する」をご参照ください。