For eachタスクを使用して別のタスクをループで実行します。
For each タスクを使用して、ネストされたタスクをループで実行し、タスクの各反復に異なるパラメーターのセットを渡します。
For each タスクをジョブに追加するには、For each タスクと ネストされたタスク の 2 つのタスクを定義する必要があります。ネストされたタスクは、 For each タスクの反復ごとに実行するタスクであり、標準の Lakeflow ジョブ タスク タイプの 1 つです。 ネストされたタスクとして別の For each タスクを追加することはできません。
例えば、For each タスクを使用して、複数のテーブルに対して共通の変換を実行し、テーブル名のリストからテーブル名をタスクの各イテレーションに渡すことができます。
互いに依存関係がないネストされたタスクは、同時に実行できます。
ジョブに「For eachタスク」を追加
ジョブを作成するとき、または既存のジョブのタスクを編集するときに、For eachタスクを追加できます。For eachタスクを構成するには:
-
タスクを追加 をクリックします。
-
「 タスク名 」フィールドに名前を入力します。
-
[タイプ] ドロップダウン メニューで、 [それぞれ] を選択します。
-
「タスク名」 フィールドにタスクの名前を入力します。
-
[入力] テキストボックスに、反復処理する
For eachタスクの値をJSON形式の値の配列として定義します。ネストされたタスクにパラメーターを渡す方法について詳しくは、For eachタスクのパラメーターの種類を参照してください。 -
必要に応じて、並列で実行できるイテレーションの数を設定するには、タスクの 同時実行 値を入力します。 デフォルト値は 1 です。
-
タスクの開始、成功、または失敗の通知をオプションで受け取るには、
「追加」 をクリックします。「ジョブに通知を追加する」を参照してください。
-
For eachタスクの構成を完了し、各イテレーションで実行するネストされたタスクを追加するには、**[ループするタスクを追加]**をクリックします。 -
ネストされたタスクのタスクタイプと設定オプションを選択します。ネストされたタスクは標準のタスクタイプであり、同じ設定オプションがあります。 「Lakeflowジョブでのタスクの設定と編集」を参照してください。
-
For eachタスクから渡されたパラメーターを参照するには、[ パラメーター ] をクリックします。各イテレーションの配列値に値を設定するために{{input}}参照を使用するか、オブジェクトのリストを反復処理するときに個々のオブジェクト フィールドを参照するために{{input.<key>}}を使用します。
-
(オプション)再試行、実行期間、ストリーミングバックログのしきい値、または通知を設定するには、高度なタスク設定を参照してください。
-
タスクの保存 をクリックします。
このタスクを編集、クローン、無効化、または削除するには、「Lakeflowジョブでタスクを構成および編集する」を参照してください。
For eachタスクとネストされたタスクを切り替える
For eachタスクは、ジョブUIでFor eachノード内にあるネストされたタスクノードを持つノードとして表示されます。For eachタスクとネストされたタスクを切り替えるには、それぞれのノードをクリックします。


For eachタスクのパラメーターの種類
For each タスクは、入れ子になったタスクの各反復にパラメーターを渡します。入力はオブジェクトの配列であり、各オブジェクトは入れ子になったタスクの反復に渡されます。タスクが使用する入力を作成する方法は複数あります。JSON 形式の配列、タスク値、ジョブパラメーターなどです。
パラメーターは、UI上で直接5,000文字、タスク値参照を使用する場合は48 KB(値がそれを記述する文字列のサイズよりもはるかに大きい場合があります)、またはジョブのパラメーター値として10,000文字に制限されます。パラメーターが48 KBを超える必要がある場合は、より大きな構成ファイルにルックアップを渡すことができます。大きなパラメーター配列のルックアップテーブルの使用を参照してください。
JSON形式の値の配列。
タスクを作成または編集するときに、 [入力] テキスト ボックスを使用して、ネストされたタスクの値の配列を直接定義できます。 これは、次のデータ型の配列にすることができます。
- キーと値のペア
- 文字列、数値、またはBoolean型
- 任意の複雑なJSONオブジェクト
たとえば、[{"table": "sales"}, {"table": "orders"}]を渡す場合、ネストされたタスク内のフィールドを{{input.table}}で参照します。
[入力] テキストボックス、およびこのボックスに直接渡される JSON は、5,000 文字に制限されています。
タスク値の参照
先行タスクからタスク値を渡すことができます。 渡されたタスクの値を参照するには、 {{tasks.<task_name>.values.<task_value_name>}} 構文を使用して [入力] テキスト ボックスに値を設定します。 たとえば、For each タスクの前にある generate_countries_list という名前のタスクで、次のタスク値を設定するとします。
dbutils.jobs.taskValues.set(key = "countries", value = countries_array)
次に、 For each タスクは、次の構文を使用して [入力] テキスト ボックスのタスク値を参照します。
{{tasks.generate_countries_list.values.countries}}.
Inputs テキスト ボックスには最大 5,000 文字を入力できますが、参照が表す値は最大 48 KB まで対応できます。タスク値の詳細については、タスク値を使用してタスク間で情報を渡すをご覧ください。
ジョブパラメーター
ジョブ・パラメーターを入力として使用することもできます。 ジョブ・パラメーターを参照するには、 入力 テキスト・ボックスで {{job.parameters.<name>}}という構文を使用します。 たとえば、 {{job.parameters.countries}}。
[入力] テキストボックスには、ジョブパラメーターを参照するために最大5,000文字まで入力できます。ジョブパラメーター値は10,000文字に制限されます。ジョブパラメーターの詳細については、ジョブパラメーターを構成するを参照してください。
ダウンストリーム タスクでFor eachタスクを参照する
For eachタスクは最上位タスクであり、ダウンストリームタスクはそれを依存関係として指定できます。ダウンストリームタスクは、ネストされたタスクに依存したり、参照したりすることはできません。
For eachタスクは、入力値を提供する上流タスクが無効になっている場合、失敗します。制限事項を参照してください。
For eachタスクを使用したジョブの実行と監視
For eachタスクでジョブを実行する方法は、他のジョブを実行するのと同じです。
ジョブ実行の表示と管理も、タスクの反復のテーブルとして表示される For each タスクのタスク実行履歴を除き、他のジョブと同じです。 「For eachタスクのタスク実行履歴の表示」を参照してください。
チュートリアル
SQLタスクとFor eachタスクを使用してメタデータ駆動型のジョブを作成する方法については、コントロール テーブルを使用してFor eachジョブを実行するを参照してください。