この記事では、ジョブ UI でのタスクの追加と構成の詳細など、lakeflow ジョブで 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
タスクの値を定義します。 入れ子になったタスクにパラメーターを渡す方法の詳細については、「For each
タスクで使用できるパラメーターの種類」を参照してください。必要に応じて、並列で実行できるイテレーションの数を設定するには、タスクの Concurrency 値を入力します。 既定値は 1です。
オプションでタスクの開始、成功、または失敗に関する通知を受け取るには、[+ 追加] をクリックします。 「ジョブに通知を追加する」を参照してください。
For each
タスクの構成を完了し、各反復で実行するネストされたタスクを追加するには、「ループするタスクの追加」をクリックします。入れ子になったタスクのタスクの種類と構成オプションを選択します。 入れ子になったタスクは標準のタスクの種類であり、同じ構成オプションがあります。 「Lakeflow ジョブのタスクの構成と編集」を参照してください。
For each
タスクから渡されたパラメータを参照するには、「パラメータ」をクリックします。{{input}}
参照を使用して各反復の配列値に値を設定するか、オブジェクトのリストを反復処理するときに{{input.<key>}}
を使用して個々のオブジェクト フィールドを参照します。[タスクの作成] をクリックします。
For each
タスクと入れ子になったタスクを切り替える
For each
タスクは、ジョブ UI に、For each
ノード内に入れ子になったタスク ノードを持つノードとして表示されます。
For each
タスクと入れ子になったタスクを切り替えるには、それぞれのノードをクリックします。
For each
タスクで使用できるパラメーターの種類は何ですか?
For each
タスクは、入れ子になったタスクの各イテレーションにパラメーターを渡します。 入力はオブジェクトの配列であり、各オブジェクトは入れ子になったタスクのイテレーションに渡されます。 タスクで使用される入力を作成するには、JSON 形式の配列、タスク値、ジョブ パラメーターなど、複数の方法があります。
注
パラメーターは、UI で直接 5,000 文字に制限されます。タスク値参照を使用する場合は 48 KB (値を記述する文字列のサイズよりもはるかに大きくすることができます)、ジョブ パラメーターの値には 10,000 文字に制限されます。 パラメーターに 48 KB を超える値が必要な場合は、より大きな構成ファイルにルックアップを渡すことができます。 大きなパラメーター配列に対する参照テーブルの使用を参照してください。
JSON 形式の値の配列
タスクを作成または編集するときに、[ 入力] テキスト ボックスを使用して、入れ子になったタスクの値の配列を直接定義できます。 これは、次のデータ型の配列になります。
- キー/値ペア
- 文字列、数値、またはブール型
- 任意に複雑な JSON オブジェクト
入力テキスト ボックス、つまりこのボックスに直接渡される JSON は、5,000 文字に制限されています。
タスク値の参考
前のタスクからタスク値を渡すことができます。 渡されたタスク値を参照するには、 {{tasks.<task_name>.values.<task_value_name>}}
構文を使用して、[ 入力 ] テキスト ボックスに値を設定します。 たとえば、generate_countries_list
タスクの前に For each
という名前のタスクが設定されている場合、次のタスク値が設定されます。
dbutils.jobs.taskValues.set(key = "countries", value = countries_array)
次に、For each
タスクは、次の構文を使用して、[入力] テキスト ボックス内のタスク値を参照します。
{{tasks.generate_countries_list.values.countries}}
=
[ 入力 ] テキスト ボックスには最大 5,000 文字を入力できますが、参照が表す値は最大 48 KB にすることができます。 タスク値の詳細については、「タスク値を使用してタスク間で情報を渡す」を参照してください。
ジョブ パラメーター
ジョブ パラメーターを入力として使用することもできます。 ジョブ パラメーターを参照するには、 [入力] テキスト ボックス {{job.parameters.<name>}}
で次の構文を使用します。 たとえば、{{job.parameters.countries}}
のようにします。
ジョブ パラメーターを参照するには、[ 入力 ] テキスト ボックスに最大 5,000 文字を入力できます。 ジョブ パラメーターの値は 10 KB に制限されています。 ジョブ パラメーターの詳細については、「ジョブ パラメーターを構成する」を参照してください。
ダウンストリーム タスクで For each
タスクを参照する
For each
タスクは最上位のタスクであり、ダウンストリーム タスクでは依存関係として指定できます。 ダウンストリーム タスクは、入れ子になったタスクに依存したり参照したりすることはできません。
For each
タスクを使用してジョブを実行および監視する
For each
タスクでジョブを実行することは、他のジョブの実行と同じです。
ジョブの実行の表示と管理は、他のジョブと同じですが、 For each
タスクのタスク実行履歴は、タスクイテレーションの表として表示されます。
For each
タスクのタスク実行履歴の表示を参照してください。