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