Freigeben über


Ausführen einer parametrisierten Azure Databricks-Auftragsaufgabe in einer Schleife

In diesem Artikel wird die Verwendung der For each-Aufgabe mit Ihren Azure Databricks-Jobs erläutert, einschließlich Details zum Hinzufügen und Konfigurieren der Aufgabe in der Job-Benutzeroberfläche. Verwenden Sie die For each-Aufgabe, um eine Aufgabe in einer Schleife auszuführen, und dabei einen anderen Satz von Parametern an jede Iteration der Aufgabe übergeben.

Zum Hinzufügen der Aufgabe For each zu einem Auftrag müssen zwei Aufgaben definiert werden: Die For each-Aufgabe und eine geschachtelte Aufgabe. Die geschachtelte Aufgabe ist die Aufgabe, die für jede Iteration der For each-Aufgabe ausgeführt werden soll, und ist einer der standardmäßigen Azure Databricks Jobs-Aufgabentypen. Sie können keine weitere For each-Aufgabe als geschachtelte Aufgabe hinzufügen.

Sie können z. B. die For each-Aufgabe verwenden, um eine gemeinsame Gruppe von Transformationen für mehrere Tabellen auszuführen und einen Tabellennamen aus einer Liste von Tabellennamen an jede Iteration der Aufgabe zu übergeben.

Welche Parametertypen kann ich mit der For each-Aufgabe verwenden?

Zum Übergeben von Parametern aus einer For each-Aufgabe können Sie folgende Aktionen ausführen:

Informationen zum Verwenden dieser verschiedenen Parametertypen beim Hinzufügen oder Bearbeiten einer For each-Aufgabe finden Sie im nächsten Abschnitt Hinzufügen der einzelnen Aufgaben zu einem Job.

Fügen Sie einem Job die For each-Aufgabe hinzu

Sie können eine For each-Aufgabe hinzufügen, wenn Sie einen Auftrag erstellen oder eine Aufgabe in einem vorhandenen Auftrag bearbeiten. So konfigurieren Sie eine For each-Aufgabe:

  1. Wählen Sie im Dropdownmenü Typ die Option Für jede aus.

  2. Geben Sie im Feld Aufgabenname einen Namen für die Aufgabe ein.

  3. Definieren Sie im Textfeld Eingaben die Werte, für die die For each-Aufgabe durchlaufen werden soll. Folgende Möglichkeiten stehen zur Auswahl:

    • Eine JSON-formatierte Matrix von Werten. Dies kann eine Matrix der folgenden Datentypen sein:

      • Schlüssel-Werte-Paare
      • Zeichenfolgen, Zahlen oder boolesche Typen
      • Beliebig komplexe JSON-Objekte
    • Aufgabenwertverweise. Um von einer vorherigen Aufgabe übergebene Vorgangswerte zu referenzieren, verwenden Sie die {{tasks.<task_name>.values.<task_value_name>}}- Syntax, um den Wert im Textfeld Eingaben festzulegen. Wenn beispielsweise eine Aufgabe mit dem Namen generate_countries_list, die der For each-Aufgabe vorausgeht, den folgenden Aufgabenwert festlegt:

      dbutils.jobs.taskValues.set(key = "countries", value = countries_array)

      Anschließend verweist die For each-Aufgabe auf den Aufgabenwert im Textfeld Eingabe mit der folgenden Syntax:

      {{tasks.generate_countries_list.values.countries}}.

    • Auftragsparameter. Verwenden Sie zum Verweisen auf einen Job-Parameter die folgende Syntax im Textfeld Eingaben: {{job.parameters.<name>}}. Beispiel: {{job.parameters.countries}}.

  4. Um optional die Anzahl der Iterationen festzulegen, die parallel ausgeführt werden können, geben Sie einen Parallelitätswert für die Aufgabe ein. Der Standardwert ist 1.

  5. Klicken Sie auf + Hinzufügen, um optional Benachrichtigungen für Start, Erfolg oder Fehler der Aufgabe zu erhalten. Weitere Informationen finden Sie unter Hinzufügen von E-Mail- und Systembenachrichtigungen für Auftragsereignisse.

  6. Um die Konfiguration der For each-Aufgabe abzuschließen und eine geschachtelte Aufgabe hinzuzufügen, die für jede Iteration ausgeführt werden soll, klicken Sie auf Eine Aufgabe hinzufügen, um eine Schleife zu durchlaufen.

  7. Wählen Sie einen Aufgabentyp und Konfigurationsoptionen für die geschachtelte Aufgabe aus. Geschachtelte Aufgaben sind Standardaufgabentypen und verfügen über die gleichen Konfigurationsoptionen. Siehe Konfigurieren und Bearbeiten von Databricks-Aufgaben.

  8. Klicken Sie auf Parameter, um von der For each-Aufgabe übergebene Parameter zu referenzieren. Verwenden Sie den {{input}}-Verweis, um den Wert auf den Matrixwert jeder Iteration festzulegen oder {{input.<key>}}, um auf einzelne Objektfelder zu verweisen, wenn Sie eine Liste von Objekten durchlaufen.

    Hinzufügen einer geschachtelten Aufgabe zu einem Für jede Aufgabe

  9. Klicken Sie auf Aufgabe erstellen.

Wechseln zwischen der For each-Aufgabe und der geschachtelten Aufgabe

Die For each-Aufgabe wird in der Job-Benutzeroberfläche als Knoten mit dem geschachtelten Aufgabenknoten innerhalb des For each-Knotens angezeigt. Um zwischen der For each-Aufgabe und der geschachtelten Aufgabe zu wechseln, klicken Sie auf die entsprechenden Knoten.

Ansicht „Gerichteter azyklischer Graph der Aufgaben-Benutzeroberflächen“ auf „Für jede Aufgabe“ wechseln

Ansicht „Gerichteter azyklischer Graph der Aufgaben-Benutzeroberflächen“ auf geschachtelten Aufgabe wechseln

Verweisen auf eine For each-Aufgabe in nachgelagerten Aufgaben

Die For each-Aufgabe ist die Aufgabe auf oberster Ebene, und nachgeschaltete Aufgaben können sie als Abhängigkeit angeben. Nachgeschaltete Aufgaben können nicht von der geschachtelten Aufgabe abhängen oder darauf verweisen.

Ausführen und Überwachen eines Jobs mit einer For each-Aufgabe

Das Ausführen eines Jobs mit einer For each-Aufgabe ist identisch mit dem Ausführen eines anderen Jobs.

Das Anzeigen und Verwalten von Job-Ausführungen ist auch mit jedem anderen Job identisch, mit Ausnahme des Aufgabenausführungsverlaufs für eine For each-Aufgabe, die als Tabelle mit Aufgabeniterationen dargestellt wird. Siehe Ansicht des Aufgabenausführungsverlaufs für jede Aufgabe.