標準的な上流・下流の依存関係だけでは、複雑なビジネスシナリオに対応できない場合があります。例えば、日次ノードが実行される前に、前日のすべての時間単位ノードが完了するのを待つ必要がある場合などです。また、複数のノードからの条件を AND/OR ロジックで組み合わせる必要も生じるかもしれません。このようなケースでは、より柔軟なツールが必要です。このトピックでは、依存関係チェックノードを使用して、サイクル、ワークフロー、ワークスペースをまたぐ複雑な依存関係チェックを構築する方法について説明します。これにより、ノードがトリガーされるタイミングを正確に制御し、データの正確かつタイムリーな処理を保証できます。
機能概要
依存関係チェックノードは、サイクルをまたぐ複雑な依存関係シナリオを処理するための、強力で柔軟なツールです。例えば、日次ノードが実行される前に、前日のすべての時間単位ノードが成功するのを待つ必要がある場合などです。また、ノードが異なるワークスペースにある複数のノードの条件を満たす必要がある場合もあります。
主な特徴:
エンティティ間の依存関係:ワークスペースやワークフローをまたいで依存関係を設定できます。
クロスサイクル依存:クロスサイクル依存において、先祖インスタンスの正確な時間範囲を指定できます。
複雑なロジックの組み合わせ:複数の依存関係チェック条件を AND および OR 関係で組み合わせることができます。
カスタムチェックポリシー:カスタムのチェック頻度と最大待機時間を設定できます。チェックがタイムアウトした場合、ノードは失敗します。
設定インターフェイスの概要
依存関係チェックノードの設定は、主に Check dependencies と Check settings の 2 つの部分で構成されます。

依存関係チェックノードの設定
依存関係チェックノード設定のコアは、その依存関係チェックロジックを構築することです。複数のチェック項目とチェックグループを定義し、それらを AND/OR 関係で組み合わせることができます。各チェック項目は、特定の時間範囲内にある 1 つ以上の先祖ノードのインスタンスを指します。依存関係チェックノードが実行されると、論理式全体が評価されます。その後、子孫ノードを実行するかブロックするかを決定するブール値 (True/False) を返します。
依存関係チェック項目の設定
依存関係チェックノードでは、複数のチェックグループを設定できます。各グループには複数の Check item を含めることができ、複雑な依存関係ネットワークを構築できます。
チェックグループとチェック項目の追加:
[+ 項目の追加] をクリックして、新しい依存関係チェック条件を作成します。
複数のチェック項目をチェックグループにまとめます。
チェック項目の内容の設定:
Task:先祖ノードの [出力名]、[名前]、または [ID] を入力して検索し、選択します。
同じワークフロー内のノード、このワークスペース内の別のワークフローのノード、または権限を持つ別のワークスペースのノードを選択できます。
重要単純なワークスペース間またはワークフロー間のスケジューリング依存関係については、「ワークフロー間およびワークスペース間のスケジューリング依存関係の設定」をご参照ください。
本番環境に公開されていないノードを選択すると、システムに次のプロンプトが表示されます:選択されたノードは本番環境に公開されていません。実行時にチェックが失敗する可能性があります。
Period:期間は、実行時にチェックされる先祖ノードの履歴インスタンスを指定します。要件に基づいて期間タイプを選択します。詳細は次の表をご参照ください。
説明1 つのチェック項目内の条件は AND 関係で結合されます。例えば、当日のすべての時間単位ノードを選択した場合、チェックが True を返すには、それらすべてが正常に実行される必要があります。
期間タイプ
オプション
説明
分
Previous X minutes(X は 0~59)現在時刻の
X分前のインスタンスをチェックします。Current minuteはPrevious 0 minutesに相当します。時間
Previous X hours(X は 0~23)現在時刻の
X時間前のインスタンスをチェックします。Current hourはPrevious 0 hoursに相当します。日
Previous X days(X は 0~7)X日前のインスタンスをチェックします。TodayはPrevious 0 daysに相当します。週
今週の月曜日から日曜日まで、先週の月曜日から日曜日まで、先週の月曜日、先週の火曜日...先週の日曜日。指定された週の範囲内のインスタンスをチェックします。
月
First day to last day of this month、First day of this month、Last day of last monthなど。指定された月の範囲内のインスタンスをチェックします。
論理関係 (AND/OR) の設定:
インターフェイスの左側で、チェックグループ間およびグループ内のチェック項目間の論理関係を設定できます。
AND:関連するすべてのチェック項目またはチェックグループが成功する必要があります。
OR:関連するチェック項目またはチェックグループのいずれか 1 つが成功すれば十分です。
チェック設定の構成
ページの下部で、ノードのチェック動作を定義します:
Check interval:すべての依存関係のステータスをチェックする頻度を指定します。最小値は
1 分/チェックです。Max duration:ノードの最大待機時間を指定します。この期間を超えても依存関係が満たされない場合、依存関係チェックノードは失敗します。最大値は
1440 分(24 時間) です。
ランタイムロジックとステータス
チェック中:Max duration 内に依存関係の条件が満たされない場合、ノードは ランニング 状態のままになります。[チェック間隔] の設定に基づいて、定期的にチェックを再試行します。
成功:Max duration 内に、指定された AND/OR ロジックに従ってすべての依存関係条件が満たされた場合、ノードのステータスは 正常に実行 に変わります。
失敗:
Max duration を超えても依存関係の条件が満たされない場合。
チェック中に、必須の依存項目 (例えば、AND 関係にある項目) が存在しないノードを指している場合、チェックは早期に終了し、ノードのステータスは 失敗した実行 に設定されます。
ユースケース:日次ノードを前日のすべての時間単位ノードの完了まで待機させる
冒頭で紹介した典型的なシナリオを考えてみましょう。日次サマリーレポートノード (rpt_daily_summary) があります。このノードは、開始する前に、前日 (00:00 から 23:59) の ods_hourly_log という名前の時間単位ノードの 24 個すべてのインスタンスが正常に実行されるのを待つ必要があります。
依存関係チェックノードのドラッグ
ワークフローで、依存関係チェックノードを日次ノードrpt_daily_summaryの上流にドラッグして接続します。依存関係チェック項目の設定
依存関係チェックノードをダブルクリックして、その依存関係チェック項目を設定します。依存ノードの追加: [+ 項目を追加] をクリックします。Task 入力ボックスで、時間単位ノード
ods_hourly_logを検索して選択します。時間範囲の定義: 前日のすべての時間単位インスタンスをチェックする必要があります。Period を
Dayに設定し、Previous 1 dayを選択します。システムは、前の暦日のこの時間単位ノードのすべてのインスタンス (24 個) が成功したかどうかをチェックします。
論理関係の設定: チェック項目が 1 つしかないため、チェックグループとその項目にはデフォルトの論理関係である
ANDを使用できます。
チェックポリシーの設定
Check interval:例えば、5 分/チェック に設定します。これは、依存関係が満たされていない場合に、システムが 5 分待機した後に再度チェックを行うことを意味します。
Max duration:例えば、180 分 に設定します。これは、日次ノードのスケジュール時刻からノードが最大 3 時間待機することを意味します。3 時間経過しても前日の時次ノードがすべて完了していない場合、依存関係チェックノードは失敗します。これにより、下流の日次ノードが開始されるのを防ぎます。また、これにより無期限の待機を防ぎ、問題を迅速に顕在化させます。
構成が完了したら、保存して公開します。これにより、日次レポートノードは、実行される前にすべての毎時データの準備が整うのを待つようになります。
付録:スケジュール依存関係との違い
依存関係チェックノードの構成におけるチェック対象ノードは、スケジュール構成におけるスケジュール依存関係とは異なります。違いは以下の通りです。
属性 | 依存関係チェックノードにおけるチェック対象ノード | スケジュール依存関係ノード |
トリガーメソッド | 依存関係チェックノードは、チェック項目のステータスをアクティブにポーリングします。チェック項目ノードが依存関係チェックノードのステータスをトリガーしたり変更したりすることはありません。 | ターゲットノードがスケジュールされた実行時間に達すると、スケジュール依存関係ノードのステータスが要件を満たしているかどうかをチェックします。 |
DAG の可視化 | 依存関係はノードの構成内に含まれており、DAG 上には表示されません。 | DAG 上で上流および下流の依存関係を示す線として表示されます。 |
データバックフィル/再実行の相互作用 | チェック項目ノードのデータを再実行またはバックフィルしても、子孫ノードは自動的にトリガーされません。 | スケジュール依存関係ノードのデータをバックフィルすると、オプションでターゲットノードをトリガーできます。 |