Köra uppgifter villkorligt i ett Azure Databricks-jobb

Som standard körs en jobbaktivitet när dess beroenden har körts och alla har slutförts, men du kan också konfigurera uppgifter i ett Azure Databricks-jobb så att de bara körs när specifika villkor uppfylls. Azure Databricks Jobs stöder följande metoder för att köra uppgifter villkorligt:

  • Du kan ange Kör om beroenden ska köra en aktivitet baserat på körningsstatusen för aktivitetens beroenden. Du kan till exempel använda Run if för att köra en aktivitet även när vissa eller alla dess beroenden har misslyckats, vilket gör att jobbet kan återställas från fel och fortsätta köras.
  • Villkorsaktiviteten If/else används för att köra en del av ett jobb DAG baserat på resultatet av ett booleskt uttryck. Med If/else condition uppgiften kan du lägga till förgreningslogik i jobbet. Du kan till exempel bara köra transformeringsuppgifter om den överordnade inmatningsaktiviteten lägger till nya data. Annars kan du köra databearbetningsuppgifter.

Lägg till villkoret för Run if en aktivitet

Du kan konfigurera ett Run if villkor när du redigerar en uppgift med ett eller flera beroenden. Om du vill lägga till villkoret i aktiviteten väljer du villkoret i listrutan Kör om beroenden i aktivitetskonfigurationen . Villkoret Run if utvärderas när alla aktivitetsberoenden har slutförts. Du kan också lägga till ett Run if villkor när du lägger till en ny aktivitet med ett eller flera beroenden.

Run if villkorsalternativ

Du kan lägga till följande Run if villkor i en uppgift:

  • Alla lyckades: Alla beroenden har körts och lyckats. Det här är standardvillkoret för att köra en uppgift. Uppgiften markeras som Upstream failed om villkoret är ouppfyllt.
  • Minst en lyckades: Minst ett beroende har lyckats. Uppgiften markeras som Upstream failed om villkoret är ouppfyllt.
  • Inget misslyckades: Inget av beroendena misslyckades och minst ett beroende kördes. Uppgiften markeras som Upstream failed om villkoret är ouppfyllt.
  • Allt klart: Aktiviteten körs när alla dess beroenden har körts, oavsett status för de beroende körningarna. Med det här villkoret kan du definiera en aktivitet som körs utan beroende på resultatet av dess beroende aktiviteter.
  • Minst ett misslyckades: Minst ett beroende misslyckades. Uppgiften markeras som Excluded om villkoret är ouppfyllt.
  • Allt misslyckades: Alla beroenden har misslyckats. Uppgiften markeras som Excluded om villkoret är ouppfyllt.

Kommentar

  • Uppgifter som konfigurerats för att hantera fel markeras som Excluded om deras Run if villkor är ouppfyllt. Exkluderade aktiviteter hoppas över och behandlas som lyckade.
  • Om alla aktivitetsberoenden exkluderas utesluts även aktiviteten, oavsett dess Run if villkor.
  • Om du avbryter en aktivitetskörning sprids annulleringen genom underordnade aktiviteter och aktiviteter med ett Run if villkor som hanterar fel körs, till exempel för att verifiera att en rensningsaktivitet körs när en aktivitetskörning avbryts.

Hur avgör Azure Databricks-jobb status för jobbkörning?

Azure Databricks-jobb avgör om en jobbkörning lyckades baserat på resultatet av jobbets lövaktiviteter. En lövaktivitet är en aktivitet som inte har några underordnade beroenden. En jobbkörning kan ha ett av tre resultat:

  • Lyckades: Alla aktiviteter lyckades.
  • Lyckades med fel: Vissa aktiviteter misslyckades, men alla lövaktiviteter lyckades.
  • Misslyckades: En eller flera lövaktiviteter misslyckades.

Lägga till förgreningslogik i jobbet med If/else condition uppgiften

Använd uppgiften If/else condition för att köra en del av ett jobb-DAG baserat på ett booleskt uttryck. Uttrycket består av en boolesk operator och ett par operander, där operanderna kan referera till jobb- eller uppgiftstillstånd med hjälp av variabler för jobb- och aktivitetsparameter eller använda aktivitetsvärden.

Kommentar

  • Numeriska och icke-numeriska värden hanteras olika beroende på den booleska operatorn:
    • Operatorerna == och != utför strängjämförelser av sina operander. Till 12.0 == 12 exempel utvärderas till false.
    • Operatorerna >, >=och <= utför numeriska jämförelser av sina operander. Till exempel 12.0 >= 12 utvärderas till sant och 10.0 >= 12 utvärderas till false.
    • Endast numeriska värden, strängvärden och booleska värden tillåts när du refererar till aktivitetsvärden i en operand. Andra typer gör att villkorsuttrycket misslyckas. Icke-numeriska värdetyper serialiseras till strängar och behandlas som strängar i If/else condition uttryck. Om ett aktivitetsvärde till exempel är inställt på ett booleskt värde serialiseras det till "true" eller "false".

Du kan lägga till en If/else condition uppgift när du skapar ett jobb eller redigerar en uppgift i ett befintligt jobb. Så här konfigurerar du en If/else condition uppgift:

  1. I listrutan Typ väljer du If/else condition.
  2. I den första textrutan Villkor anger du den operand som ska utvärderas. Operand kan referera till en variabel för jobb- eller aktivitetsparameter eller ett aktivitetsvärde.
  3. Välj en boolesk operator i den nedrullningsbara menyn.
  4. I den andra textrutan Villkor anger du värdet för att utvärdera villkoret.

Så här konfigurerar du beroenden för en If/else condition uppgift:

  1. Välj uppgiften If/else condition i DAG-vyn och klicka på + Lägg till aktivitet.
  2. När du har angett information om aktiviteten klickar du på Beror på och väljer <task-name> (true) var <task-name> är namnet påIf/else condition aktiviteten.
  3. Upprepa för villkoret som utvärderas till false.

Anta till exempel att du har en uppgift med namnet process_records som upprätthåller ett antal poster som inte är giltiga i ett värde med namnet bad_records, och du vill förgrena bearbetningen baserat på om poster som inte är giltiga hittas. Om du vill lägga till den här logiken i arbetsflödet kan du skapa en If/else condition uppgift med ett uttryck som {{tasks.process_records.values.bad_records}} > 0. Du kan sedan lägga till beroende aktiviteter baserat på resultatet av villkoret.

När körningen av ett jobb som innehåller en If/else condition uppgift har slutförts kan du visa resultatet av uttrycket och information om uttrycksutvärderingen när du visar jobbkörningsinformationen i användargränssnittet.