このトピックでは、for-each ノードを使用してループを 2 回繰り返し、ループカウントを表示する方法について説明します。

  • for-each ノードは、DataWorks Standard Edition 以降でのみ使用することができます。
  • for-each ノードを使用して、ループを最大 128 回繰り返すことができます。 ループカウントがこの制限を超えると、エラーが生じます。
  • for-each ノードの論理条件に基づいて結果をスキャンする必要がある場合は、分岐ノードを使用することができます。 for-each ノードでは、分岐ノードをマージノードと一緒に使用する必要があることにご注意ください。

for-each ノードの作成

  1. DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、ワークスペースをクリックします。 ワークスペースページで、ターゲットワークスペースを見つけて、[アクション] 列の [データ分析] をクリックします。
  2. ポインターを作成アイコンの上に移動して、[全般] > [for-each] をクリックします。

    ターゲットワークフローを見つけて、[全般] を右クリックして、[作成] > [for-each] をクリックします。

  3. 表示されるノードを作成ダイアログボックスで、ノード名を入力し、ターゲットフォルダーを選択して、[コミット] をクリックします。
    ノード名は最大 128 文字です。
  4. 作成されたワークフローで、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 ノードのデフォルトの入力パラメーターです。 このパラメーターを親ノードの出力パラメーターの値に設定します。 このパラメーターを設定しない場合、ノードをコミットする際にエラーが生じます。

ノードをコミットしてデプロイします。 オペレーションセンターに移動して、実行結果を表示します。