同周期依存とは、現在のノードが現在の周期で、上流ノードが同じ周期でデータを正常に生成したかどうか、つまり、タスクが正常に実行されたかどうかに依存することを意味します。現在のノードは、現在の周期に対応する上流ノードのインスタンスが正常に完了した後にのみ実行されます。通常、タスクが同じ周期で上流タスクが生成したテーブルデータを使用する必要がある場合、現在のタスクをその上流タスクの同周期インスタンスに依存するように設定します。DataWorks には、同周期依存を設定するための複数の方法があり、依存関係のプレビュー機能も備わっています。これにより、不正確な依存関係をすぐに確認・修正して、タスクのスケジューリングが期待どおりに動作することを保証します。このトピックでは、同周期依存を設定する際の主な注意点、設定の原則、および方法について説明します。
注意事項
-
スケジューリング依存関係をスムーズに設定するために、まず ノードのスケジューリング設定 を参照してください。
-
DataWorks の DAG 図では、同周期依存は実線として表示されます。
-
一部の複雑なシナリオで、同周期依存がニーズを満たさない場合は、代わりにクロスサイクル依存を設定してください。たとえば、日次タスクは、デフォルトで、同日のすべての時間単位のインスタンスに依存します。時間単位のタスクで 自己依存 を使用すると、日次タスクを特定の時間単位のインスタンスにのみ依存させることができます。複雑な依存関係シナリオの詳細については、「複雑な依存関係シナリオのスケジューリング設定の原則と例」をご参照ください。
設定の原則
開発効率を向上させるには、自動依存関係解析 機能を使用してノードの依存関係を迅速に設定できます。開発中に自動解析を使用する場合は、以下の原則に従ってください。
-
ノード作成:ノードとその出力テーブルに同じ名前を使用します。
-
コード開発:複数のノードから同じテーブルにデータを書き込まないようにします。
-
依存関係の設定:ノードの出力テーブルをノードの出力として設定します。
アクセスポイントと設定の詳細
データ開発ノードの編集ページを開きます。右側のナビゲーションウィンドウで Scheduling Settings をクリックします。Scheduling Dependency セクションで、ノードの依存関係を設定します。
同周期依存を設定する際、Parent Nodes セクションでは、現在のタスクが依存する上流タスクを定義します。Output Name of Current Node セクションでは、他のタスクがこのノードの出力を参照して依存関係を確立する方法を定義します。
-
デフォルトでは、DataWorks はコード内のテーブルリネージ (クエリおよび書き込み対象のテーブル) を使用して、依存関係を迅速に設定します。ノードを送信すると、システムは現在の依存関係がデータリネージと一致しているかどうかを自動的にチェックします。ビジネスニーズに応じて、タスクを送信する前に自動コード解析を有効にするかどうかを選択できます。
-
プラットフォームは、自動リネージ解析、ワークフローパネルでのコネクター描画、手動追加 など、複数の依存関係設定方法に対応しています。ニーズに合った方法を選択してください。
-
ノードが、昨日上流ノードによって生成されたデータを必要とする場合、または時間単位や分単位のタスクがその前の時間単位や分単位のインスタンスに依存する場合は、クロスサイクル依存を設定してください。
依存関係設定パネルには、[上流ノード] (このノードの入力) と [ノード出力] の 2 つの主要セクションがあります。
上流ノード
このセクションでは、現在のノードの上流ノードを定義します。設定後、現在のノードは、その上流ノードが正常に完了した後にのみ実行されるようになります。上流ノードの出力名を、現在のノードの入力としてここに入力します。上流ノードを設定する際は、次の点に注意してください。
-
すべてのノードには、上流の依存関係が設定されている必要があります。可能な限り、テーブルリネージに基づいて設定を行ってください。テーブルリネージが存在しない場合は、ビジネス要件に基づいて、ワークスペースルートノードまたはゼロロードノードに依存するように設定してください。
-
上流ノードがすでに送信されていることを確認してください。送信中に「the upstream node output does not exist」というエラーが表示された場合は、必要な上流ノードが送信されていることを確認してください。
方法1:自動依存関係解析
DataWorks は、コードから projectName.tableName 形式の出力テーブル名を解析し、それらのテーブルに基づいて上流ノードを推奨します。
[コードから入力と出力を解析] をクリックすると、解析結果が下の依存関係リストに自動的に生成されます。
方法2:手動追加
Add Dependency をクリックします。依存関係の方法を選択した後、Name、Output Name、またはスケジューリングタスク[ID] で上流の依存関係を検索します。
自動依存関係解析を使用する場合、上流タスクがすでに送信されて本番環境にデプロイされ、実際にテーブルデータを生成していることを確認してください。推奨されるノードは、スケジューリングシステムに 1 日前に送信されている必要があります。翌日にデータが生成された後でのみ、自動推奨機能がそれらを検出できます。したがって、自動的に推奨されるノードには T+1 の遅延があります。
ノード出力
ノード出力は、他のノードがこのノードに依存するための接続点として機能します。他のノードは、出力名でこのノードを特定し、スケジューリング依存関係の設定を通じて、このノードを上流ノードとして設定します。下流ノードがこのノードへの依存関係を設定して送信を完了すると、下流ノードの名前がこのノードの出力の下に表示されます。DataWorks では、ノード出力インターフェイスで下流ノードを手動で編集することはできません。出力を次のように設定します。
ワークスペースに同じ名前のノードが含まれている場合、それらの出力も同じ名前になる可能性があり、送信が失敗する原因となります。すでに下流の依存関係があるノード出力を削除すると、深刻な問題を引き起こす可能性があります。詳細については、「ノード出力の削除または変更による影響」をご参照ください。
方法1:デフォルト生成
DataWorks は、自動的に 1 つのノード出力を生成します。Modify をクリックして、出力テーブル名を変更してください。
出力名はグローバルに一意であり、変更または削除することはできません。ワークフローパネルでコネクターを描画して依存関係を設定すると、DataWorks は下流ノードの入力として出力テーブル名と出力名を自動的に生成します。
方法2:手動追加
ノード出力設定セクションで、[出力を追加] をクリックして新しい出力を手動で作成し、その出力名と出力テーブル名を指定します。
出力名は workspace_name.custom_configuration の形式に従い、グローバルに一意である必要があります。
設定の原則
スケジューリング依存関係の設定では、上流ノードの出力を下流ノードの入力として扱い、依存関係の連鎖を作成します。ノードが読み書きするテーブルのリネージに基づいて、スケジューリング依存関係を設定してください。設定後、下流ノードは上流ノードの実行が正常に完了した後にのみ開始され、実行時に正しいデータを利用できるようになります。
依存関係は 3 つの方法で設定できます。どの方法を使用しても、基本的な原則は同じです。
|
設定方法 |
説明 |
|
DataWorks は、上流ノードのデフォルト出力を下流ノードの入力として自動的に追加し、依存関係を確立します。 |
|
|
DataWorks は、ノードコードからテーブルリネージを自動的に解析し、そのリネージに基づいてスケジューリング依存関係を設定します。 |
|
|
自動的に解析された依存関係が実際の要件と一致しない場合、この方法を使用してスケジューリング依存関係を手動で調整できます。 |
設定方法
ワークフローパネルでコネクターを描画してノードの依存関係を設定
スケジューリング設定インターフェイスでの上流ノード依存関係の手動追加
自動解析機能を使用したノード依存関係の設定
次のステップ:依存関係が期待どおりであることの確認
設定が完了したら、次の操作を実行して、ジョブのスケジューリングが期待どおりに動作することを確認できます。
-
送信チェック:ノードの送信時に、依存関係の変更が期待どおりかを確認します。
-
定期タスクの依存関係の検証:ノードを公開した後、オペレーションセンターに移動して本番環境のスケジューリング依存関係が期待どおりかを確認します。定期タスクは、本番環境におけるタスクの最新の状態を反映します。定期タスクのインスタンス依存関係は、インスタンスがどのように生成されるかによって決まります。