このトピックでは、マージノードの概要、作成方法、設定方法について説明し、スケジューリングプロパティとランタイム動作の実用的な例を紹介します。
背景情報
マージノードは、DataStudio の論理コントロールノードの一種です。上流ノードの実行ステータスをマージして、ブランチノードの下流ノードにおける依存関係とトリガーの問題を解決します。
現在、マージノードの実行ステータスは [成功] にのみ設定できます。これにより、下流ノードはマージノードを単一の信頼性の高い依存関係として使用できます。
たとえば、ブランチノード C には、相互排他的な 2 つのブランチ C1 と C2 があるとします。各ブランチは、異なるロジックを使用して同じ MaxCompute テーブルに書き込みます。下流ノード B がこのテーブルの出力に依存する場合、まずマージノード J を使用してブランチを統合し、次に J を B の上流依存関係として設定する必要があります。B が C1 と C2 の両方に直接依存するように設定すると、ブランチ条件が満たされないため、いずれか一方のインスタンスステータスは常に [ブランチ未実行] となります。その結果、B も [ブランチ未実行] に設定されてドライラン状態になり、実行されません。後続のすべての下流ノードでも同じことが起こります。
制限事項
マージノード機能は、DataWorks Standard Edition 以降でのみ利用可能です。DataWorks のエディションを購入またはアップグレードするには、「各 DataWorks エディションの機能詳細」をご参照ください。
マージノードの作成
-
DataStudio ページに移動します。
DataWorks コンソールにログインします。対象のリージョンで、左側のナビゲーションウィンドウのをクリックします。ドロップダウンリストからワークスペースを選択し、入力 データ開発をクリックします。
-
アイコンにカーソルを合わせ、 をクリックします。 -
Create Node ダイアログボックスで、ノードの Name を入力し、Path を選択します。
-
OK をクリックします。
マージロジックの定義
マージノードを作成すると、その設定ページが開きます。このページを使用して、マージロジックを定義します。
-
マージする上流ブランチノードを追加します。これらのノードは、マージノードの親ノードになります。
Merged Branch エリアで、対応する親ノードをノード名、ノード ID、またはノードの出力で検索し、
アイコンをクリックしてブランチノードとして追加します。説明複数のブランチノードをマージするには、ノードごとにこの手順を繰り返します。
-
MERGE Condition セクションで、ブランチノードのマージ条件を設定します。
各ブランチノードのマージロジックと必須の実行ステータスを設定します。
-
マージロジックの条件は次のとおりです。
-
AND: Result エリアで設定される現在のノードの実行ステータスは、すべての上流ブランチノードの実行が完了し、設定された実行ステータスを満たした場合にのみ有効になります。
-
OR: Result エリアでこのノードに設定された実行状態は、すべての上流ノードが最終状態 (つまり、実行が完了した状態) にあり、かついずれかのブランチノードがその設定された実行状態を満たす場合にのみ有効になります。
-
-
完了後に利用可能なノード実行ステータスは次のとおりです。
-
Successful: ノードは正常に実行されました。
-
Failed: ノードは実行に失敗しました。
-
Branch Not Running: ノードが選択されておらず、ドライラン状態です。この状態では、ノードは成功とマークされますが、タスクは実際には実行されません。
説明このステータスは、上流ノードがブランチノードの場合にのみ有効です。
-
-
-
Result セクションで、現在のノードのランタイムステータスを設定します。
説明現在のノードの実行ステータスは、Successful にしか設定できません。
例:
-
ブランチノード A と B を現在のマージノードの上流ノードとして追加します。
-
ノード A の実行ステータスがSuccessful、Branch Not Running、またはFailedに設定されることは、ノード A がその実行を完了するだけでよいことを意味します。
-
ノード B の実行ステータスはSuccessfulおよびBranch Not Runningに設定されます。これは、ノード B の実行が完了し、失敗しなかったことを意味します。
-
論理演算子は AND に設定されています。
したがって、現在のマージノードの Successful 実行ステータスは、ノード A の実行が完了し、かつノード B の実行が完了して失敗していない場合にのみ有効になります。
ノード設定ページの右側にあるScheduling Settingsをクリックして、マージノードのスケジューリングプロパティを設定します。詳細については、「基本プロパティを設定する」をご参照ください。
マージノードの例
ダウンストリームノードにアップストリームノードとしてブランチノードを追加すると、対応するブランチノードの出力を選択して、さまざまなブランチパスを定義できます。 たとえば、次の図に示すビジネスプロセスでは、[ブランチ 1] と [ブランチ 2] はブランチノードの 2 つのダウンストリームノードです。
[Branch 1] は autotest.fenzhi121902_1 の出力に依存します。[Branch 1] ノードの [依存関係] 設定パネルで、[自動解析] を [はい] に設定し、手動で上流依存関係を追加します。[親ノード出力] を、親ノード [branch_node_121902] に対応する autotest_fenzhi121902_1 に設定します。
[Branch 2] は autotest.fenzhi121902_2 の出力に依存します。
実行結果
Operational Logsでは、ブランチ条件を満たし、実行対象として選択された下流ノードのランタイムステータスを表示できます。
Operational Logsでは、ブランチ条件を満たさず、実行対象として選択されなかったブランチの下流ノードが、スキップ済みとしてマークされていることを確認できます。
マージノードの下流ノードは期待どおりに実行されます。