Delen via


Een geparameteriseerde Azure Databricks-taak uitvoeren in een lus

In dit artikel wordt het gebruik van de For each taak besproken met uw Azure Databricks-taken, inclusief details over het toevoegen en configureren van de taak in de gebruikersinterface van Taken. Gebruik de For each taak om een taak in een lus uit te voeren en een andere set parameters door te geven aan elke iteratie van de taak.

Voor het toevoegen van de For each taak aan een taak moeten twee taken worden gedefinieerd: de For each taak en een geneste taak. De geneste taak is de taak die moet worden uitgevoerd voor elke iteratie van de For each taak en is een van de standaardtakentypen van Azure Databricks Jobs. U kunt geen andere For each taak toevoegen als geneste taak.

U kunt de For each taak bijvoorbeeld gebruiken om een gemeenschappelijke set transformaties uit te voeren voor meerdere tabellen, waarbij een tabelnaam wordt doorgegeven uit een lijst met tabelnamen voor elke iteratie van de taak.

Welke parametertypen kan ik gebruiken met de For each taak?

Als u parameters van een For each taak wilt doorgeven, kunt u het volgende doen:

Zie de volgende sectie Voor elke taak toevoegen aan een taak voor meer informatie over het gebruik van deze verschillende parametertypen wanneer u een For each taak toevoegt of bewerkt.

De For each taak toevoegen aan een taak

U kunt een For each taak toevoegen wanneer u een taak maakt of een taak in een bestaande taak bewerkt. Een taak configureren For each :

  1. Selecteer voor elk in het vervolgkeuzemenu Type.

  2. Voer een naam in voor de taak in het veld Taaknaam .

  3. Definieer in het tekstvak Invoer de waarden voor de taak waarop de For each taak moet worden herhaald. Dit kan een van de volgende zijn:

    • Een in JSON opgemaakte matrix met waarden. Dit kan een matrix zijn van de volgende gegevenstypen:

      • sleutel-waardeparen
      • Tekenreeksen, getallen of Booleaanse typen
      • Willekeurige complexe JSON-objecten
    • Verwijzingen naar taakwaarden. Als u wilt verwijzen naar taakwaarden die zijn doorgegeven uit een voorgaande taak, gebruikt u de {{tasks.<task_name>.values.<task_value_name>}} syntaxis om de waarde in te stellen in het tekstvak Invoer . Als een taak die generate_countries_list voorafgaat aan de For each taak bijvoorbeeld de volgende taakwaarde instelt:

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

      Vervolgens verwijst de For each taak naar de taakwaarde in het tekstvak Invoer met behulp van de volgende syntaxis:

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

    • Taakparameters. Als u naar een taakparameter wilt verwijzen, gebruikt u de volgende syntaxis in het tekstvak Invoer : {{job.parameters.<name>}}. Bijvoorbeeld: {{job.parameters.countries}}.

  4. Als u optioneel het aantal iteraties wilt instellen dat parallel kan worden uitgevoerd, voert u een gelijktijdigheidswaarde voor de taak in. De standaardwaarde is 1.

  5. Als u optioneel meldingen wilt ontvangen voor het starten, slagen of mislukken van taken, klikt u op + Toevoegen. Zie E-mail- en systeemmeldingen toevoegen voor taakevenementen.

  6. Klik op Een taak toevoegen om de configuratie van de For each taak te voltooien en een geneste taak toe te voegen die voor elke iteratie moet worden uitgevoerd.

  7. Selecteer een taaktype en configuratieopties voor de geneste taak. Geneste taken zijn standaardtaaktypen en hebben dezelfde configuratieopties. Zie Databricks-taken configureren en bewerken.

  8. Als u wilt verwijzen naar parameters die zijn doorgegeven vanuit de For each taak, klikt u op Parameters. Gebruik de {{input}} verwijzing om de waarde in te stellen op de matrixwaarde van elke iteratie of {{input.<key>}} om te verwijzen naar afzonderlijke objectvelden wanneer u een lijst met objecten doorgeeft.

    Een geneste taak toevoegen aan een voor elke taak

  9. Klik op Taak maken.

Schakelen tussen de For each taak en de geneste taak

De For each taak wordt weergegeven in de gebruikersinterface taken als een knooppunt met het geneste taakknooppunt in het For each knooppunt. Als u wilt schakelen tussen de For each taak en de geneste taak, klikt u op de respectieve knooppunten.

Dagweergave voor taken overschakelen naar Voor elke taak

Taakinterface DAG-weergave overschakelen naar geneste taak

Verwijzen naar een For each taak in downstreamtaken

De For each taak is de taak op het hoogste niveau en downstreamtaken kunnen deze opgeven als een afhankelijkheid. Downstreamtaken kunnen niet afhankelijk zijn van of verwijzen naar de geneste taak.

Een taak uitvoeren en bewaken met een For each taak

Het uitvoeren van een taak met een For each taak is identiek aan het uitvoeren van een andere taak.

Het weergeven en beheren van taakuitvoeringen is ook identiek aan elke andere taak, behalve de taakuitvoeringsgeschiedenis voor een For each taak, die wordt weergegeven als een tabel met taakiteraties. Zie De uitvoeringsgeschiedenis van de taak weergeven voor een voor elke taak.