パラメーター化された Azure Databricks ジョブ タスクをループで実行する
この記事では、ジョブ UI でのタスクの追加と構成の詳細など、Azure Databricks ジョブで For each
タスクを使用する方法について説明します。 For each
タスクを使用して、タスクをループで実行し、タスクのイテレーションごとに異なるパラメーター セットを渡します。
ジョブに For each
タスクを追加するには、For each
タスクとネストされたタスクの 2 つのタスクを定義する必要があります。 入れ子になったタスクは、For each
タスクのイテレーションごとに実行するタスクであり、標準的な Azure Databricks ジョブ タスクの種類の 1 つです。 入れ子になったタスクとして別の For each
タスクを追加することはできません。
たとえば、For each
タスクを使用して、複数のテーブルに対して共通の変換セットを実行し、テーブル名の一覧からタスクの各イテレーションにテーブル名を渡すことができます。
For each
タスクで使用できるパラメーターの種類は何ですか?
For each
タスクからパラメーターを渡すには、次の操作を行います。
- タスクを作成または編集するときに、JSON 形式のコレクションを定義します。
- 前のタスクから渡されたタスク値を使用します。 タスク値の詳細については、「タスク値を使用してタスク間で情報を渡す」を参照してください。
- ジョブ パラメーターを使用します。 ジョブ パラメーターの詳細については、「ジョブ パラメーターを構成する」を参照してください。
For each
タスクを追加または編集するときにこれらのさまざまなパラメーター タイプを使用する方法については、次のセクション「ジョブに For each タスクを追加する」を参照してください。
ジョブに For each
タスク を追加します。
ジョブを作成したり、既存のジョブ内のタスクを編集したりする際に、For each
タスクを追加できます。 For each
タスクを構成するには:
[種類] ドロップダウン メニューで、[For each]を選択します。
[タスク名] フィールドに、タスクの名前を入力します。
[入力] テキスト ボックスで、反復処理する
For each
タスクの値を定義します。 DLL は、次のいずれかの場所に置くことができます。JSON 形式の値の配列。 これは、次のデータ型の配列になります。
- キーと値のペア
- 文字列、数値、またはブール型
- 任意に複雑な JSON オブジェクト
タスク値の参照。 前のタスクから渡されたタスク値を参照するには、
{{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}}
=ジョブ パラメーター。 ジョブ パラメーターを参照するには、 [入力] テキスト ボックス
{{job.parameters.<name>}}
で次の構文を使用します。 たとえば、{{job.parameters.countries}}
のようにします。
必要に応じて、並列で実行できるイテレーションの数を設定するには、タスクの Concurrency 値を入力します。 既定値は 1です。
オプションでタスクの開始、成功、または失敗に関する通知を受け取るには、[+ 追加] をクリックします。 「ジョブに通知を追加する」を参照してください。
For each
タスクの構成を完了し、各反復で実行するネストされたタスクを追加するには、「ループするタスクの追加」をクリックします。入れ子になったタスクのタスクの種類と構成オプションを選択します。 入れ子になったタスクは標準のタスクの種類であり、同じ構成オプションがあります。 「Databricks タスクを構成および編集する」を参照してください。
For each
タスクから渡されたパラメータを参照するには、「パラメータ」をクリックします。{{input}}
参照を使用して各反復の配列値に値を設定するか、オブジェクトのリストを反復処理するときに{{input.<key>}}
を使用して個々のオブジェクト フィールドを参照します。[タスクの作成] をクリックします。
For each
タスクと入れ子になったタスクを切り替える
For each
タスクは、ジョブ UI に、For each
ノード内に入れ子になったタスク ノードを持つノードとして表示されます。 For each
タスクと入れ子になったタスクを切り替えるには、それぞれのノードをクリックします。
ダウンストリーム タスクで For each
タスクを参照する
For each
タスクは最上位のタスクであり、ダウンストリーム タスクでは依存関係として指定できます。 ダウンストリーム タスクは、入れ子になったタスクに依存したり参照したりすることはできません。
For each
タスクを使用してジョブを実行および監視する
For each
タスクでジョブを実行することは、他のジョブの実行と同じです。
ジョブの実行の表示と管理は、他のジョブと同じですが、 For each
タスクのタスク実行履歴は、タスクイテレーションの表として表示されます。 「For each タスクのタスク実行履歴の表示」を参照してください。