DataWorksは、for-eachノードを提供しています。 for-eachノードを使用すると、割り当てノードによって渡された結果セットをループ処理できます。 また、for-eachノードの内部ノードをカスタマイズすることもできます。 このトピックでは、for-eachノードの動作方法と設定方法の例を示します。 この例では、for-eachノードを使用して割り当てノードの出力を2回ループし、各ループの現在のループカウントが表示されます。
前提条件
for-eachノードを設定する前に、for-eachノードのロジックをよく理解しておく必要があります。 これにより、ノードの設定中にエラーが発生するのを防ぎます。 for-eachノードのロジックについては、for-eachノードのロジックをご参照ください。
手順
ほとんどの場合、for-eachノードは割り当てノードと共に使用されます。 このセクションでは、for-eachノードを使用する手順について説明します。

for-eachノードの依存関係を設定します。
for-eachノードは、割り当てノードに依存する必要があります。 for-eachノードの依存関係の設定方法については、ワークフローの作成と設定をご参照ください。
for-eachノードへの入力パラメータを設定します。
for-eachノードの[入力パラメータと出力パラメータ] セクションで、割り当てノードの outputs という名前の組み込み出力パラメータを、for-eachノードの [入力パラメータ] に入力パラメータとして追加します。 割り当てノードの設定方法については、割り当てノードの設定をご参照ください。
for-eachノードの内部ノードを設定して、for-eachノードの入力パラメータを取得します。
ビジネス要件に基づいてfor-eachノードの内部ワークフローを設定し、ワークフロー内の内部ノードの組み込み変数を設定して入力パラメータに必要な値を取得してから、for-eachノードを実行できます。 組み込み変数については、組み込み変数をご参照ください。 for-eachノードの設定方法については、for-eachノードの設定をご参照ください。
for-eachノードをテストします。 DataStudioではfor-eachノードをテストできません。
for-eachノードをテストするには、[オペレーションセンター] に移動し、目的の内部ノードを見つけて、ノードの名前をクリックしてノードの詳細を表示します。 詳細については、for-eachノードのテストとテスト結果の表示をご参照ください。
説明オペレーションセンターで、割り当てノードが出力をfor-eachノードに渡すかどうかを確認するには、データバックフィル 機能を使用し、割り当てノードとfor-eachノードの両方を選択できます。 for-eachノードのみを実行した場合、割り当てノードの出力は取得できません。
ワークフローの作成と設定
割り当てノードを祖先ノード、for-eachノードを子孫ノードとするワークフローを作成するには、次の手順を実行します。
DataStudioページに移動します。
DataWorksコンソール にログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションペインで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[データ開発に移動] をクリックします。
自動トリガーワークフローの作成を行います。
for-eachノードを作成します。
[スケジュールワークフロー] ペインで、
アイコンにポインタを移動し、 を選択します。または、[ビジネスフロー] セクションで目的のワークフローを見つけ、ワークフローを右クリックして、 を選択することもできます。
[ノードの作成] ダイアログボックスで、名前やパスなどのパラメータを設定します。
[確認] をクリックします。
割り当てノードを作成します。
ワークフローをダブルクリックして、ワークフローの設定タブに移動します。 [+ ノードの作成] をクリックし、[一般] セクションの [割り当てノード] を右側のキャンバスにドラッグします。
割り当てノードについては、割り当てノードの設定をご参照ください。

[ノードの作成] ダイアログボックスで、[名前] パラメータと [パス] パラメータを設定します。 デフォルトでは、割り当てノードは現在のワークフローに配置されます。
[確認] をクリックします。
有向線をドラッグして、割り当てノードをfor-eachノードの祖先ノードとして設定します。

割り当てノードの設定
作成したワークフローの設定タブで、作成した割り当てノードの名前をダブルクリックします。 割り当てノードの設定タブが表示されます。
[言語] ドロップダウンリストから [SHELL] を選択します。
コードエディタに次のステートメントを入力します。
echo 'this is name,ok';右側のナビゲーションペインで、[プロパティ] タブをクリックします。 [入力パラメータと出力パラメータ] セクションの [出力パラメータ] テーブルで、outputsパラメータに関する情報を表示します。 outputsパラメータは、割り当てノードのデフォルトの出力パラメータです。

トップツールバーの
アイコンをクリックして、割り当てノードを保存します。トップツールバーの
アイコンをクリックして、割り当てノードをコミットします。[送信] ダイアログボックスで、[変更の説明] パラメータを設定します。 次に、ビジネス要件に基づいて、ノードのコミット後にノードコードを確認するかどうかを決定します。
重要ノードをコミットする前に、[プロパティ] タブで [再実行] パラメータと [親ノード] パラメータを設定する必要があります。
コードレビュー機能を使用して、ノードのコード品質を確保し、無効なノードコードによって発生するノード実行エラーを防ぐことができます。 コードレビュー機能を有効にすると、コミットされたノードコードは、コードレビューに合格した後でのみデプロイできます。 詳細については、コードレビューをご参照ください。
使用しているワークスペースが標準モードの場合、ノードのコミット後に、ノード設定タブの右上隅にある [デプロイ] をクリックして、実行環境にノードをデプロイする必要があります。 詳細については、ノードのデプロイをご参照ください。
for-eachノードの設定
作成したfor-eachノードをダブルクリックします。 for-eachノードの設定タブが表示されます。 デフォルトでは、開始ノード、Shellノード、終了ノードがタブに表示されます。
ビジネス要件に基づいて、Shellノードを別のノードに置き換えることができます。
Shellノードを使用する場合は、Shellノードを直接設定できます。
別のタイプのノードを使用する場合は、デフォルトの Shell ノードを削除し、必要なタイプのノードを作成します。
この例では、Shellノードを使用します。
Shellノードを設定します。
Shellノードをダブルクリックします。 Shellノードの設定タブが表示されます。
コードエディタに次のコードを入力します。
echo ${dag.loopTimes} ----現在のループ回数を表示します。説明for-eachノードの開始ノードと終了ノードはロジックが固定されており、編集できません。
Shellノードのコードを変更した後、変更を保存します。 ノードをコミットするときに、変更を保存するように促すメッセージは表示されません。 変更を保存しないと、コードを最新バージョンにタイムリーに更新できません。
for-eachノードのスケジューリングプロパティを設定します。
for-eachノードの設定タブで、右側のナビゲーションペインの [プロパティ] タブをクリックします。
[入力パラメータと出力パラメータ] セクションの [入力パラメータ] テーブルでloopDataArrayパラメータを見つけ、[アクション] 列の [変更] をクリックします。 loopDataArrayパラメータは、for-eachノードのデフォルトの入力パラメータです。
[値のソース] 列のドロップダウンリストから割り当てノードのoutputsパラメータを選択し、[保存] をクリックします。
説明割り当てノードをfor-eachノードの祖先ノードとして設定した後、[プロパティ] タブでfor-eachノードの入力パラメータを指定する必要があります。 入力パラメータを指定しないと、for-eachノードをコミットするときにエラーが発生します。
トップツールバーの
アイコンをクリックして、for-eachノードを保存します。トップツールバーの
アイコンをクリックして、for-eachノードをコミットします。重要ノードをコミットする前に、[プロパティ] タブで [再実行] パラメータと [親ノード] パラメータを設定する必要があります。
[コミット] ダイアログボックスで、コミットする内部ノードを選択し、[説明] フィールドにコメントを入力して、[コミット] をクリックします。
使用しているワークスペースが標準モードの場合、ノードのコミット後に、ノード設定タブの右上隅にある [デプロイ] をクリックしてノードをデプロイする必要があります。 詳細については、ノードのデプロイをご参照ください。
for-eachノードのテストとテスト結果の表示
ノード設定タブで、右上隅の [オペレーションセンター] をクリックして、[オペレーションセンター] に移動します。
[オペレーションセンター] ページの左側のナビゲーションペインで、 を選択します。
[サイクルタスク] ページで、for-eachノードを見つけ、[アクション] 列の [DAG] をクリックして、for-eachノードの有向非巡回グラフ( DAG )を開きます。 for-eachノードの DAG で、割り当てノードを右クリックし、 を選択します。 [パッチデータ] ダイアログボックスで、パラメータを設定し、[ OK ] をクリックします。

[パッチデータ] ページを更新します。 データバックフィルインスタンスが実行された後、インスタンスの [アクション] 列の [DAG] をクリックします。
表示される DAG で、割り当てノードを右クリックし、[実行ログの表示] を選択して、操作ログを表示します。

[パッチデータ] ページで、DAG のfor-eachノードを右クリックし、[内部ノードの表示] を選択します。

表示されるページで、中央ペインの [ループ 1 ] をクリックし、DAG のShellノードを右クリックして、[実行ログの表示] を選択します。

表示されるページで、最初のループのShellノードの操作ログを表示します。

同じ方法を使用して、2 番目のループのShellノードの操作ログを表示します。
