ブランチノードは、Data Studio の制御フローノードです。 これを使用してブランチロジックを定義し、さまざまな条件に基づいて下流ノードの実行を制御できます。
注意事項
-
ブランチノード機能を使用するには、DataWorks Standard Edition 以上を購入する必要があります。 詳細については、「DataWorks のエディションの比較」をご参照ください。
-
ブランチノードは最大 50 のブランチを持つことができます。
-
ブランチノードは通常、代入ノードと一緒に使用されます。 詳細については、「代入ノード」をご参照ください。
-
ランタイムでブランチ条件が満たされない場合、そのブランチの下流ノードはドライラン状態になります。 ランタイムログには、
It's set condition-skip by taskのようなメッセージが表示されます。
ブランチノードの作成
DataWorks コンソールにログインします。 対象リージョンで、左側のナビゲーションウィンドウで をクリックします。 ドロップダウンリストからワークスペースを選択し、入力 データ開発 をクリックします。
-
アイコンにカーソルを合わせ、 を選択します。または、対象のワークフローを開き、空白のエリアを右クリックして を選択することもできます。
-
Create Node ダイアログボックスで、ノード名を入力し、パスを選択します。
- [コミット] をクリックします。
-
ブランチロジックを定義します。
-
Definition ページで、Add Branch をクリックします。
-
Branch Definition ダイアログボックスで、パラメーターを設定します。
パラメーター
説明
Condition
ブランチの条件を指定します。 次のルールに注意してください:
-
ロジック条件の定義には、Python 比較演算子のみを使用できます。
-
ランタイムで式が true と評価された場合、対応するブランチ条件が満たされます。
-
ランタイムで式の解析中にエラーが発生した場合、ブランチノード全体が失敗します。
-
ブランチ条件では、グローバル変数とノードコンテキストで定義されたパラメーターを使用できます。 たとえば、${input} はブランチノードで定義された入力パラメーターにすることができます。
Associated Node Output
下流ノードが依存関係に使用する出力を定義します:
-
下流ノードはこの出力を使用して依存関係を確立します。
-
ブランチ条件が満たされると、他の上流の依存関係も満たされている場合、関連する出力に依存する下流ノードが実行されます。
-
ブランチ条件が満たされない場合、対応する出力に依存する下流ノードは実行されません。 DataWorks はこれらのノードを
ブランチ条件が満たされていないため実行されません状態に設定します。
Description
ブランチの簡単な説明を入力します。 たとえば、条件 ${input}==1 と ${input}>2 を持つ 2 つのブランチを定義できます。
次の例は、Associated Node Output パラメーターを設定する方法を示しています。
たとえば、ブランチノードには qqqq と wwww という名前の 2 つの下流ノードがあります。 ブランチ条件が 1 の場合、qqqq ノードのロジックが実行されます。 ブランチ条件が 2 の場合、wwww ノードのロジックが実行されます。 ブランチノードを設定するときに、必要に応じてノード出力を設定できます。 たとえば、ブランチ 1 の出力が 1234 で、ブランチ 2 の出力が 2324 の場合、両方ともこのブランチノードの出力名として使用されます。 下流の qqqq ノードは出力名 1234 を参照する必要があり、wwww ノードは出力名 2324 を参照する必要があります。
-
-
OK をクリックします。
ブランチを追加した後、Edit または Delete できます。
-
Edit をクリックして、ブランチ設定を変更します。 DataWorks は関連する依存関係をそれに応じて更新します。
-
Delete をクリックして、ブランチを削除します。 DataWorks は関連する依存関係も更新します。
-
-
-
右側のペインで Scheduling Settings をクリックして、ノードのスケジューリングプロパティを設定します。
ブランチ条件を定義すると、DataWorks は自動的に出力名を タブの Output Name of Current Node セクションに追加します。 下流ノードはこれらの出力名を使用して依存関係を宣言できます。
説明-
ドライランプロパティは下流ノードに伝播するため、ブランチパスに自己依存タスクを配置しないでください。 上流ノードからドライランプロパティを継承するかどうかの詳細については、「上流ノードからドライランプロパティを継承する」をご参照ください。
-
線を描画してノードコンテキストを確立することで依存関係を作成し、出力名がスケジューリング設定に表示されない場合は、手動で出力名を入力する必要があります。
-
-
ノードをコミットしてデプロイします。
-
ツールバーの
アイコンをクリックしてノードを保存します。 -
ツールバーの
アイコンをクリックしてノードをコミットします。 -
Submission ダイアログボックスで、Change Description を入力します。
-
OK をクリックします。
標準モードのワークスペースを使用する場合、タスクをコミットした後に本番環境にデプロイする必要があります。 上部メニューバーの左上隅にある [タスクのデプロイ] をクリックします。 詳細については、「タスクのデプロイ」をご参照ください。
-
-
定期タスクを表示します。
-
エディターの右上隅にある O&M Personnel をクリックして、本番環境のオペレーションセンターを開きます。
-
実行中の定期タスクを表示します。 詳細については、「定期タスクの管理」をご参照ください。
定期タスクの詳細を表示するには、上部メニューバーの Operation Center をクリックします。 詳細については、「オペレーションセンターの概要」をご参照ください。
-
例:下流ノードの依存関係
下流ノードがブランチノードに依存する場合、ブランチノードから特定の出力を選択して、下流ノードがいつ実行されるかを制御できます。 たとえば、次の図に示すワークフローでは、[ブランチ 1] と [ブランチ 2] はブランチノードの 2 つの下流ノードです。
ブランチ 1:autotest.fenzhi121902_1 出力に依存します。 ブランチ 1 ノードの [スケジューリングの依存関係] パネルで、上流ノードの [親ノードの出力名] は autotest.fenzhi121902_1 に設定されています。 対応するノード名は ブランチノード 121902 で、ソースは 手動で追加 です。
ブランチ 2:autotest.fenzhi121902_2 出力に依存します。
ワークフローをオペレーションセンターに送信した後、autotest.fenzhi121902_1 に依存するブランチの条件が満たされたと仮定します。 ログには次のように表示されます:
-
Operational Logs では、ブランチ条件が満たされたために実行された下流ノードのステータスを表示できます。
-
Operational Logs では、満たされなかったブランチ条件の下流ノードがスキップされ、ステータスが
It's set condition-skip by taskになっていることがわかります。 ブランチ 2 のようなスキップされたノードの場合、その ランタイムログ には黄色のメッセージIt's set condition-skip by task(9760933771-branch node 121902)が表示されます。 このメッセージは、ブランチノードがノードの実行をスキップしたことを示し、そのランタイム期間は 0s です。
サポートされている Python 比較演算子
次の例では、変数 a は 10、変数 b は 20 と仮定します。
|
演算子 |
説明 |
例 |
|
== |
等しい:2 つのオブジェクトが等しいかどうかをチェックします。 |
(a == b) は false を返します。 |
|
!= |
等しくない:2 つのオブジェクトが等しくないかどうかをチェックします。 |
(a != b) は true を返します。 |
|
<> |
等しくない:2 つのオブジェクトが等しくないかどうかをチェックします。 |
(a <> b) は true を返します。 この演算子は != に似ています。 |
|
> |
より大きい:x が y より大きいかどうかをチェックします。 |
(a > b) は false を返します。 |
|
< |
より小さい:x が y より小さいかどうかをチェックします。 |
(a < b) は true を返します。 |
|
>= |
以上:x が y 以上であるかどうかをチェックします。 |
(a >= b) は false を返します。 |
|
<= |
以下:x が y 以下であるかどうかをチェックします。 |
(a <= b) は true を返します。 |