このトピックでは、マージノードの目的、作成方法、およびマージロジックの定義方法について説明します。また、このトopicでは、マージノードのスケジューリングプロパティを設定し、その実行詳細を表示する方法の例も示します。
背景情報
マージノードは DataStudio の論理コントロールノードの一種です。マージノードは、その先祖ノードの実行ステータスをマージします。これにより、ブランチノードの子孫ノードの依存関係のアタッチと実行トリガーに関する問題が解決されます。
マージノードの出力ステータスは、マージ条件が満たされていれば常に成功となります。マージノードの目的は、上流のブランチノードからの複数のブランチの結果を統合することです。これにより、子孫ノードは単一の依存関係としてマージノードにアタッチできます。
たとえば、ブランチノード C には 2 つの相互排他的なブランチ C1 と C2 があります。これらのブランチは、異なるロジックを使用して同じ MaxCompute テーブルにデータを書き込みます。子孫ノード B がこの MaxCompute テーブルの出力に依存する場合、まずマージノード J を使用してブランチをマージする必要があります。次に、マージノード J をノード B の上流依存関係として設定できます。ノード B を C1 と C2 に直接アタッチすると、ブランチ条件が満たされないため、そのうちの 1 つは常にインスタンスステータスが [ブランチ未選択] になります。その結果、ノード B も [ブランチ未選択] ステータスに設定され、上流依存関係の 1 つが選択されなかったためにドライラン中にスキップされます。ノードは実行されず、このステータスはすべての子孫ノードに伝播します。
制限事項
マージノードは DataWorks Standard Edition 以降でのみ利用可能です。DataWorks の購入またはスペックアップについては、「DataWorks の各エディションの機能詳細」をご参照ください。
マージノードの作成
[DataStudio] ページに移動します。
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発へ] をクリックします。
ポインターを
アイコンに移動し、 を選択します。[ノードを作成] ダイアログボックスで、ノードの [名前] と [パス] を設定します。
[確認] をクリックします。
マージロジックの定義
マージノードを作成した後、ノード設定タブを開いてマージロジックを定義します。
マージしたい結果を持つ上流のブランチノードを追加します。これらのノードはマージノードの親ノードになります。
[マージされたブランチを追加] セクションで、親ノードを名前、ID、または出力で検索し、
アイコンをクリックして追加します。説明複数のブランチノードの結果をマージするには、このステップを繰り返します。
[マージ条件設定] セクションで、ブランチノードのマージ条件を設定します。
上流のブランチノードに必要な実行ステータスを指定して、マージロジックを設定します。
マージロジック条件には次のものがあります。
AND: [実行結果設定] セクションで指定されたノードステータスは、すべての上流ブランチノードが望ましい状態 (実行完了) に達し、そのステータスが指定されたものと一致する場合にのみ有効になります。
OR: [実行結果設定] セクションで設定されたノードステータスは、すべての上流ノードが望ましい状態 (実行完了) に達し、いずれかのブランチノードが指定された実行ステータスを満たした場合に適用されます。
考えられる実行ステータスは次のとおりです。
成功: ノードは正常に実行されました。
失敗: ノードの実行に失敗しました。
ブランチ未実行: ブランチが実行対象として選択されず、ノードはドライラン状態になります。この状態では、ノードは成功とマークされますが、タスクは実行されません。
説明このステータスは、上流ノードがブランチノードの場合にのみ適用されます。
[実行結果設定] セクションで、現在のマージノードの実行ステータスを設定します。
説明現在、マージノードの実行ステータ [成功] にのみ設定できます。
たとえば、前の図では次のようになります。
ブランチノード A と B を現在のマージノードの上流依存関係として追加します。
ノード A に必要な実行ステータスを [成功]、[ブランチ未実行]、[失敗] に設定します。これは、結果に関係なく、ノード A が実行を完了しさえすれば、ノード A の条件が満たされることを意味します。
ノード B に必要な実行ステータスを [成功] と [ブランチ未実行] に設定します。これは、ノード B が正常に実行されるか、実行対象として選択されなかった場合にのみ、ノード B の条件が満たされることを意味します。ノード B が失敗した場合、条件は満たされません。
マージロジック条件を [AND] に設定します。
したがって、現在のマージノードは、ノード A が実行を完了し、かつノード B が失敗せずに実行を完了した場合にのみ [成功] に設定されます。
ノード設定ページの右側にある [スケジュール] をクリックして、マージノードのスケジューリングプロパティを設定します。詳細については、「基本プロパティの設定」をご参照ください。
マージノードの例
異なるブランチパスを作成するには、ブランチノードを複数の子孫ノードの上流依存関係として追加できます。次に、各子孫ノードについて、ブランチノードから異なる出力を選択します。たとえば、次の図に示すビジネスフローでは、[ブランチ 1] と [ブランチ 2] は同じブランチノードの 2 つの子孫ノードです。
ブランチ 1 は autotest.fenzhi121902_1 という名前の出力に依存します。
ブランチ 2 は autotest.fenzhi121902_2 という名前の出力に依存します。
タスクの実行
[ランタイムログ] では、条件を満たして実行されるブランチの子孫ノードの実行詳細を表示できます。
[ランタイムログ] には、条件を満たさないブランチの子孫ノードがスキップされたことが示されます。
マージノードの子孫ノードは正常に実行されます。