このトピックでは、for-each ノードを使用してループを 2 回繰り返し、ループカウントを表示する方法について説明します。
注
- for-each ノードは、DataWorks Standard Edition 以降でのみ使用することができます。
- for-each ノードを使用して、ループを最大 128 回繰り返すことができます。 ループカウントがこの制限を超えると、エラーが生じます。
- for-each ノードの論理条件に基づいて結果をスキャンする必要がある場合は、分岐ノードを使用することができます。 for-each ノードでは、分岐ノードをマージノードと一緒に使用する必要があることにご注意ください。
for-each ノードの作成
- DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、ワークスペースをクリックします。 ワークスペースページで、ターゲットワークスペースを見つけて、[アクション] 列の [データ分析] をクリックします。
- ポインターをアイコンの上に移動して、
ターゲットワークフローを見つけて、[全般] を右クリックして、 をクリックします。
をクリックします。
- 表示されるノードを作成ダイアログボックスで、ノード名を入力し、ターゲットフォルダーを選択して、[コミット] をクリックします。
注 ノード名は最大 128 文字です。
- 作成されたワークフローで、for-each ノードの親ノードとして割り当てノードを作成します。
この例では、割り当てノードは Sell ノードです。 ノードに次のサンプルコードを入力します。
echo 'this is name,ok';
出力パラメーターは、割り当てノードのデフォルトの出力パラメーターです。
注
- for-each ノードの開始ノードと終了ノードのロジックは固定されており、編集することができません。
- Shell ノードのコードを編集した後、変更を保存します。 ノードをコミットするときに変更を保存するように促すメッセージは表示されません。 メッセージを保存しない場合、最新のコードを時間内に更新することができません。
Shell ノードに次のサンプルコードを入力します。
echo ${dag.loopTimes} ----Displays the loop count.
for-each ノードは、次の環境変数をサポートしています。
- ${dag.foreach.current}:現在のデータ行です。
- ${dag.loopDataArray}:入力データセットです。
- ${dag.offset}:ループカウントの 1 へのオフセットです。
- ${dag.loopTimes:値が、${dag.offset} に 1 を加えた値に等しくなるループカウントです。
// Compare the code of the Shell node with that of a common for loop.
data=[] // It is equivalent to ${dag.loopDataArray}.
// i is equivalent to ${dag.offset}.
for(int i=0;i<data.length;i++) {
print(data[i]); // data[i] is equivalent to ${dag.foreach.current}.
}
${dag.loopDataArray} パラメーターは、for-each ノードのデフォルトの入力パラメーターです。 このパラメーターを親ノードの出力パラメーターの値に設定します。 このパラメーターを設定しない場合、ノードをコミットする際にエラーが生じます。
ノードをコミットしてデプロイします。 オペレーションセンターに移動して、実行結果を表示します。