標準的な上流・下流の依存関係では複雑なビジネスシナリオに対応できない場合があります。たとえば、日次ノードが前日のすべての時次ノードの完了を待つ必要がある場合や、複数のタスクの条件を AND/OR ロジックで組み合わせる必要がある場合などです。このような場合には、より柔軟なツールが必要になります。本トピックでは、依存関係チェックノードを使用して、スケジューリング周期、ワークフロー、ワークスペースをまたぐ複雑な依存関係チェックを構築する方法について説明します。これにより、ノードの実行タイミングを正確に制御し、データ処理の精度と適時性を確保できます。
機能の概要
依存関係チェックノード は、複雑なクロスサイクル依存関係シナリオを処理するための柔軟なツールです。たとえば、日次ノード が前日のすべての 時次ノード の成功を待ってから実行する必要がある場合や、異なるワークスペースにある複数のノードの条件を同時に満たす必要がある場合などに使用します。
主な機能
-
エンティティ間の依存関係:ワークスペースやワークフローをまたいだ依存関係を設定できます。
-
クロスサイクル依存関係:クロスサイクル依存関係の上流インスタンスの期間を正確に指定できます。
-
複雑な論理の組み合わせ:AND および OR 演算子を使用して、複数の依存関係チェック条件を組み合わせることができます。
-
カスタムチェックポリシー:チェック間隔と最大期間を柔軟に設定できます。最大期間を超過した場合、ノードは失敗します。
要件
エディション要件:この機能は DataWorks Enterprise Edition でのみ使用できます。
設定 UI
依存関係チェックノードの設定には、[Check dependencies] と [Check settings] の 2 つの主要なセクションがあります。
依存関係のチェック エリアでは、複数のチェック項目を追加できます。各チェック項目では、依存する上流ノードを選択し、期間を設定する必要があります。複数のチェック項目は、AND/OR 論理演算子を使用して組み合わせることができます。チェック設定 エリアには、チェック間隔 (デフォルト:1 分/チェック) と 最大期間 (デフォルト:60 分) の 2 つのパラメーターがあります。
依存関係チェックノードの設定
依存関係チェックノードの設定の核心は、依存関係チェックの論理式を構築することです。複数のチェック項目とチェックグループを定義し、AND/OR 関係を使用してそれらを組み合わせることができます。各チェック項目は、特定の期間内の上流ノードの 1 つ以上のインスタンスを指します。依存関係チェックノードが実行されると、論理式全体を評価し、ブール値 (True/False) を返します。この結果により、下流ノードが実行されるか、ブロックされたままになるかが決まります。
チェック項目の設定
1 つの依存関係チェックノードに複数の チェックグループ を設定できます。各グループには複数の [Check item] を含めることができ、これにより複雑な依存関係ネットワークを構築できます。
-
チェックグループとチェック項目の追加:
-
[+ 項目を追加] をクリックして、新しい依存関係チェック条件を作成します。
-
複数のチェック項目をチェックグループ内にまとめることができます。
-
-
チェック項目の内容の設定:
-
[Task]:依存するノードを [Output Name]、[Name]、または [ID] で検索して選択します。
-
同じワークフロー内のノード、現在のワークスペース 内の別のワークフローのノード、または権限を持つ 別のワークスペース のノードを選択できます。
重要簡単なワークスペース間またはワークフロー間の依存関係については、「ワークフロー間およびワークスペース間のスケジューリングの依存関係を設定する」をご参照ください。
-
本番環境に公開されていないノードを選択すると、システムは次の警告を表示します:選択されたノードは本番環境に公開されていません。実行時にチェックが失敗する可能性があります。
-
-
[Period]:実行時にチェックする上流ノードの過去のインスタンスを決定します。ニーズに基づいて期間タイプを選択してください。詳細については、次の表をご参照ください。
説明単一のチェック項目内の条件は AND 関係になります。たとえば、特定の日のすべての時次ノードを選択した場合、すべてが成功している必要があり、その場合にのみ項目は True を返します。
期間タイプ
オプション
説明
分
前 X 分(X は 0~59)現在時刻の
X分前のインスタンスをチェックします。現在の分は前 0 分に対応します。時間
前 X 時間(X は 0~23)現在時刻の
X時間前のインスタンスをチェックします。現在の時間は前 0 時間に対応します。日
前 X 日(X は 0~7)X暦日前のインスタンスをチェックします。今日は前 0 日に対応します。週
今週の月曜日~日曜日、先週の月曜日~日曜日、先週の月曜日、先週の火曜日...先週の日曜日。指定された週の範囲内のインスタンスをチェックします。
月
今月の初日~最終日、今月の初日、先月の最終日など。指定された月の範囲内のインスタンスをチェックします。
-
-
論理関係の設定 (AND/OR):
-
UI の左側で、チェックグループ間 および グループ内のチェック項目間 の論理関係を設定できます。
-
AND:関連するすべてのチェック項目またはチェックグループが成功する必要があります。
-
OR:関連するチェック項目またはチェックグループの少なくとも 1 つが成功する必要があります。
-
-
チェック設定
ページの下部で、ノードのチェック動作を定義できます:
-
[Check interval]:すべての依存関係のステータスをチェックする頻度を設定します。最小値は
1 分/チェックです。 -
[Max duration]:ノードが待機する最大時間を設定します。この期間後に依存関係が満たされない場合、依存関係チェックノード自体が失敗します。最大値は
1440 分(24 時間) です。
実行時のロジックとステータス
-
実行中:[Max duration] 内に、いずれかの依存関係条件が満たされていない場合、インスタンスは [ランニング] ステータスのままとなり、チェック間隔に従って定期的に再試行します。
-
成功:[Max duration] 内に、設定された AND/OR ロジックに従ってすべての依存関係条件が満たされた場合、ノードステータスは [正常に実行] に変わります。
-
失敗:
-
[Max duration] を超過しても、依存関係条件がまだ満たされていない場合。
-
チェック中に、必須の依存関係 (AND 関係の依存関係など) が存在しないタスクを指している場合、ノードは 早期終了 し、ステータスが [失敗した実行] に変わります。
-
ユースケース: 日をまたぐ時次依存関係
冒頭で説明した典型的なシナリオに戻りましょう。日次サマリーレポートノード (rpt_daily_summary という名前の日次ノード) があり、このノードは ods_hourly_log という名前の時次ノードを待つ必要があるとします。具体的には、日次ノードを開始するには、前日の時次ノードの全 24 インスタンス (00:00~23:59) が成功している必要があります。
-
依存関係チェックノードの追加
ワークフローで、日次ノードrpt_daily_summaryの上流に依存関係チェックノードを追加し、それらを接続します。 -
チェック項目の設定
依存関係チェックノードをダブルクリックして、依存関係チェック項目を設定します。-
依存するタスクの追加:[+ 項目を追加] をクリックします。[Task] 入力ボックスで、依存する時次ノード
ods_hourly_logを検索して選択します。 -
期間の定義:[Period] で
日を選択し、次に前 1 日を選択します。システムは、前暦日のこの時次ノードのすべてのインスタンス (合計 24 個) が成功したかどうかをチェックします。
-
論理関係の設定:チェック項目が 1 つしかないため、チェックグループとその項目の論理関係はデフォルトの
ANDのままにします。
-
-
チェックポリシーの設定
-
[Check interval]:たとえば、これを 5 分/チェック に設定します。依存関係の条件が満たされていない場合、システムは 5 分待機してから再度チェックを行います。
-
[Max duration]:たとえば、これを 180 分 に設定します。この設定では、ノードは日次ノードのスケジュールされた開始時刻から最大 3 時間待機します。3 時間後も前日のすべての時次ノードが完了していない場合、依存関係チェックノードは失敗し、下流の日次ノードは開始しません。これにより、無期限の待機を防ぎ、問題を速やかに発見できます。
-
設定が完了したら、保存して公開します。これで、日次レポートノードは、必要なすべての時次データが準備できるまで待機してから実行されるようになります。
付録: スケジューリング依存関係との違い
|
属性 |
依存関係チェック |
スケジューリング依存関係 |
|
トリガー方法 |
依存関係チェックノード がチェック項目のステータスを能動的にポーリングします。チェック項目によって参照されるノードは、依存関係チェックノード のステータスをトリガーまたは変更しません。 |
対象ノードがスケジュールされた実行時刻に達すると、上流のスケジューリング依存関係ノードが成功したかどうかをチェックします。 |
|
DAG の可視化 |
依存関係はノードの設定内で定義され、DAG の可視化には表示されません。 |
DAG の可視化では、依存関係が上流から下流への接続線として表示されます。 |
|
バックフィルと再実行の動作 |
チェック項目内のノードを再実行またはバックフィルしても、対象ノードは自動的にトリガーされません。 |
スケジューリング依存関係ノードをバックフィルする場合、対象ノードをトリガーするかどうかを選択できます。 |