本トピックでは、ノード依存関係ループの概要、発生原因、および解決方法について説明します。
ノード依存関係ループとは
ノード依存関係ループは、上流ノードが自身の下流ノードのいずれかに依存している場合に発生します。これにより循環依存が生じ、自動スケジューリングによって関連ノードがトリガーされなくなります。本番環境では、DataWorks はノード依存関係ループを検出すると、自動的にアラートをトリガーします。詳細については、「ノード依存関係ループのモニタリングとアラート」をご参照ください。
原因と解決策
循環依存は、上流ノードが自身の下流ノードのいずれかに依存している場合に生じます。この依存関係を特定して削除するには、ワークフローを分析する必要があります。
たとえば、下流ノードが、前のスケジューリング周期で上流ノードが生成したデータを処理する必要がある場合があります。下流ノードが同じスケジューリング周期の上流ノードに依存するように誤って設定されている場合、ノード依存関係ループが発生します。これを解決するには、依存関係をクロスサイクルになるように再設定し、下流ノードが前のスケジューリング周期の出力に依存するようにする必要があります。
-
例:次の図に示すシナリオでは、上流ノード A がテーブル C のデータをクエリしてテーブル A への出力を生成し、下流ノード B がテーブル A のデータを処理してテーブル B に書き込み、その後ノード C がテーブル B のデータを処理してテーブル C に書き戻す場合、自動依存関係解析によってループが生成されます。
-
解決策:ワークフローを分析し、循環依存を削除します。図の例で、ビジネスロジック上、ノード A がノード C によって生成されたデータを使用する必要がある場合は、クロスサイクル依存を設定する必要があります。これにより、ノード A は前のスケジューリング周期のノード C の出力に依存できるようになり、ループが解消されます。

ノード依存関係ループのモニタリングとアラート
スケジュールされたタスクが期待どおりにインスタンスを生成して実行されるように、DataWorks は組み込みルールを使用して定期的に問題をスキャンします。DataWorks がノード依存関係ループを検出すると、自動的にアラートが送信されます。ノード依存関係ループに関するアラートを受信した場合は、迅速に解決する必要があります。
-
DataWorks は、毎日 09:00、12:00、16:00、20:00、22:00 にスケジュールされたタスクのステータスをスキャンします。DataWorks が例外を検出すると、自動的にアラートが送信されます。スキャンには、スキャン時刻の直前 10 分間に発生した例外は含まれません。DataWorks は、これらの例外を次のスキャン周期に含めます。
-
ノード依存関係ループのアラートは組み込みルールであり、手動で作成する必要はありません。デフォルトでは、アラートはテキストメッセージとメールでノード所有者に送信されます。このグローバルルールのアラート受信者は、[ルール管理] ページで変更できます。詳細については、「ルール管理」をご参照ください。