定期スケジューリングでは、ノード依存関係のループやノードの孤立といった特殊なケースが発生することがあります。どちらもタスクスケジューリングに支障をきたす可能性があります。このトピックでは、これらのシナリオについて説明し、その解決策を解説します。
シナリオ 1:ノード依存関係のループ
ノード依存関係のループの原因と解決策
ノード依存関係のループは、先祖ノードが自身の子孫ノードの 1 つに依存し、循環依存を形成するときに発生します。ビジネスワークフローを分析し、速やかに循環依存を解消する必要があります。
たとえば、子孫ノードが前のサイクルの先祖ノードによって生成されたテーブルデータに依存し、処理結果を同じテーブルに書き戻す場合があります。子孫ノードが前のサイクルではなく現在のサイクルの先祖ノードに依存するように設定されている場合、ノード依存関係のループが形成されます。ビジネスロジックを明確にした後、子孫ノードが先祖ノードの前のサイクルに依存するように再設定します。
-
例:次のシナリオでは、ノード A がテーブル C を読み取り、テーブル A にデータを出力します。子孫ノードであるノード B は、テーブル A のデータをクレンジングし、テーブル B に書き込みます。その後、ノード C はテーブル B のデータをクレンジングし、テーブル C に書き戻します。このプロセスにより依存関係のループが形成され、DataWorks によって自動的に検出されます。
-
解決策:ビジネスワークフローを分析し、循環依存を解消します。この例では、子孫ノードが前のサイクルの先祖ノードのデータを処理する必要がある場合、ノード A が前のサイクルのノード C に依存するクロスサイクル依存を設定します。
ノード依存関係のループのモニタリングとアラート
自動トリガータスクが自動トリガーインスタンスを生成して自動的に実行されるように、DataWorks は組み込みのアラートルールを使用して定期的に問題をスキャンします。ノード依存関係のループが検出されると、DataWorks は自動的にアラートを送信します。このようなアラートを受信した場合は、速やかに問題を解決してください。
-
DataWorks は毎日 09:00、12:00、16:00、20:00、22:00 に自動トリガータスクのステータスをスキャンします。DataWorks が問題を検出すると、自動的にアラートが送信されます。スキャンの 10 分前以内に発生した問題は現在のスキャンには含まれず、次のスキャンで検出されます。
-
ノード依存関係のループのアラートは組み込みアラートルールであり、手動で作成する必要はありません。デフォルトでは、DataWorks は SMS とメールでノードの所有者にアラートを送信します。ただし、ルール管理 ページでグローバルルールのアラート受信者を変更できます。詳細については、「ルール管理」をご参照ください。
シナリオ 2:ノードの孤立
ノードの孤立
ノードの孤立は、定期タスク または 定期インスタンス で依存関係を展開したときに、ノードに先祖ノードがない場合に発生します。このタイプのノードはスケジューリングシステムによってトリガーされず、実行されません。孤立したノードに多数の子孫ノードがある場合、その影響は深刻になる可能性があります。ノードの孤立が発生すると、DataWorks は自動的にアラートを送信します。このようなアラートを受信した場合は、速やかに問題を解決してください。
DataWorks では、ワークスペースルートノードを除くすべてのカスタム自動トリガータスクは、正常にスケジューリングされて実行されるには、先祖ノードに依存する必要があります。
ノードの孤立の解決
|
シナリオ |
説明 |
解決策 |
|
先祖ノードと子孫ノード間のインスタンス生成モードの不一致。 |
先祖ノードと子孫ノードが両方とも新しい場合、先祖ノードのインスタンス生成モードが [翌日] (T+1) で、子孫ノードのモードが [デプロイ直後] であると、子孫ノードがこの先祖ノードにのみ依存している場合に孤立します。これは、先祖ノードが当日にインスタンスを生成しないため、子孫ノードが実行するための依存関係がなくなるためです。 |
先祖ノードのインスタンス生成モードを調整し、再デプロイします。このシナリオの詳細については、「上流タスクと下流タスク間のインスタンス生成モードの不一致」をご参照ください。 |
|
先祖ノードが有効期間外である。 |
DataWorks では、有効期間外のノードはインスタンスを生成しません。子孫ノードが有効期間外の先祖ノードにのみ依存している場合、子孫ノードは孤立します。 |
先祖ノードのスケジューリング設定ページに移動し、その [有効期間] を変更します。 |
|
先祖ノードの出力が変更された。 |
先祖ノードのビジネスロジックの変更により、その出力が変わり、下流の依存関係が解決できなくなる可能性があります。子孫ノードがこの先祖ノードにのみ依存している場合、孤立します。 |
子孫ノードのノード依存関係を再設定します。 |
|
クロスワークスペース依存のスケジューリングが無効になっている。 |
ノードが先祖ノードへのクロスワークスペース依存を持ち、先祖ノードのワークスペースでスケジューリングが無効になっている場合、他に依存関係がなければそのノードは孤立します。 |
ワークスペースの所有者に連絡してスケジューリングを有効にするか、クロスワークスペース依存を削除します。 |
|
中間タスクが指定されたデータバックフィルの範囲外である。 |
データバックフィルを実行する際に、依存関係チェーン内の中間タスク (先祖と子孫の両方を持つタスク) がバックフィルの期間に含まれていない場合、それに依存する子孫ノードが孤立することがあります。 例:
タスク A と C のデータを |
中間タスクを同じ期間のデータバックフィルに含めます。詳細については、「データバックフィルを実行する」をご参照ください。 この例では、タスク B のデータもバックフィルする必要があります。 |
ノードの孤立のモニタリングとアラート
毎晩、DataWorks は 定期タスク に基づいて翌日の 定期インスタンス を生成します。これらのインスタンスが正常に生成され、実行されるように、DataWorks は組み込みアラートルールを使用して問題をスキャンします。ノードの孤立が検出されると、DataWorks は自動的にアラートを送信します。このようなアラートを受信した場合は、速やかに問題を解決してください。
-
DataWorks は毎日 09:00、12:00、16:00、20:00、22:00 に自動トリガータスクのステータスをスキャンします。DataWorks が問題を検出すると、自動的にアラートが送信されます。スキャンの 10 分前以内に発生した問題は現在のスキャンには含まれず、次のスキャンで検出されます。
-
ノードの孤立のアラートは組み込みアラートルールであり、手動で作成する必要はありません。デフォルトでは、DataWorks は SMS とメールでノードの所有者にアラートを送信します。ただし、ルール管理 ページでグローバルルールのアラート受信者を変更できます。詳細については、「ルール管理」をご参照ください。
孤立ノードの特定
オペレーションセンター に移動します。運用保守ダッシュボード ページで、ハイライト セクションを確認して、孤立ノードの数と詳細を確認します。