次の方法で共有


パラメーター化された 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 タスクからパラメーターを渡すには、次の操作を行います。

For each タスクを追加または編集するときにこれらのさまざまなパラメーター タイプを使用する方法については、次のセクション「ジョブに For each タスクを追加する」を参照してください。

ジョブに For each タスク を追加します。

ジョブを作成したり、既存のジョブ内のタスクを編集したりする際に、For each タスクを追加できます。 For each タスクを構成するには:

  1. [種類] ドロップダウン メニューで、[For each]を選択します。

  2. [タスク名] フィールドに、タスクの名前を入力します。

  3. [入力] テキスト ボックスで、反復処理する For each タスクの値を定義します。 DLL は、次のいずれかの場所に置くことができます。

    JSON 形式の値の配列。 これは、次のデータ型の配列になります。

    • キーと値のペア
    • 文字列、数値、またはブール型
    • 任意に複雑な 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}} のようにします。

  4. 必要に応じて、並列で実行できるイテレーションの数を設定するには、タスクの Concurrency 値を入力します。 既定値は 1です。

  5. オプションでタスクの開始、成功、または失敗に関する通知を受け取るには、[+ 追加] をクリックします。 「ジョブ イベントのメール通知とシステム通知を追加する」を参照してください。

  6. For each タスクの構成を完了し、各反復で実行するネストされたタスクを追加するには、「ループするタスクの追加」をクリックします。

  7. 入れ子になったタスクのタスクの種類と構成オプションを選択します。 入れ子になったタスクは標準のタスクの種類であり、同じ構成オプションがあります。 「タスクの種類オプション」を参照してください。

  8. For each タスクから渡されたパラメータを参照するには、「パラメータ」をクリックします。 {{input}} 参照を使用して各反復の配列値に値を設定するか、オブジェクトのリストを反復処理するときに {{input.<key>}} を使用して個々のオブジェクト フィールドを参照します。

    For each タスクに入れ子になったタスクを追加する

  9. [タスクの作成] をクリックします。

For each タスクと入れ子になったタスクを切り替える

For each タスクは、ジョブ UI に、For each ノード内に入れ子になったタスク ノードを持つノードとして表示されます。 For each タスクと入れ子になったタスクを切り替えるには、それぞれのノードをクリックします。

ジョブ UI DAG ビューが For each タスクに切り替わります

ジョブ UI DAG ビューを入れ子になったタスクに切り替える

ダウンストリーム タスクで For each タスクを参照する

For each タスクは最上位のタスクであり、ダウンストリーム タスクでは依存関係として指定できます。 ダウンストリーム タスクは、入れ子になったタスクに依存したり参照したりすることはできません。

For each タスクを使用してジョブを実行および監視する

For each タスクでジョブを実行することは、他のジョブの実行と同じです。 ジョブの実行を参照してください。

ジョブの実行の表示と管理は、他のジョブと同じですが、 For each タスクのタスク実行履歴は、タスクイテレーションの表として表示されます。 ‬「For each タスクのタスク実行履歴の表示」‭‬を参照してください。