Share via


Feladatok feltételes futtatása Egy Azure Databricks-feladatban

A feladatfeladatok alapértelmezés szerint akkor futnak, amikor a függőségei lefuttak, és az összes sikeres volt, de az Azure Databricks-feladatok tevékenységeit úgy is konfigurálhatja, hogy csak adott feltételek teljesülése esetén fussanak. Az Azure Databricks Jobs a következő módszereket támogatja a tevékenységek feltételes futtatásához:

  • Megadhatja a Futtatás lehetőséget, ha a tevékenység futtatásához függőségek adhatók meg a tevékenység függőségeinek futtatási állapota alapján. Például akkor is futtathat Run if feladatokat, ha valamelyik vagy az összes függősége meghiúsult, így a feladat helyreállhat a hibákból, és folytathatja a futtatásokat.
  • A Ha/más feltétel feladat egy feladat DAG egy részének futtatására szolgál egy logikai kifejezés eredményei alapján. A If/else condition feladat lehetővé teszi elágaztatási logika hozzáadását a feladathoz. Például csak akkor futtassa az átalakítási feladatokat, ha a felsőbb rétegbeli betöltési tevékenység új adatokat ad hozzá. Ellenkező esetben futtassa az adatfeldolgozási feladatokat.

Run if Tevékenység feltételének hozzáadása

Konfigurálhat egy feltételt Run if , ha egy vagy több függőséggel rendelkező tevékenységet szerkeszt. Ha hozzá szeretné adni a feltételt a tevékenységhez, válassza ki a feltételt a Feladatkonfiguráció Futtatás ha függőségek legördülő menüjében. A Run if feltétel kiértékelése az összes tevékenységfüggőség elvégzése után történik. Feltételt Run if akkor is hozzáadhat, ha egy vagy több függőséggel rendelkező új feladatot vesz fel.

Run if feltételbeállítások

A tevékenységekhez a következő Run if feltételeket adhatja hozzá:

  • Minden sikeres: Minden függőség futott és sikeres volt. Ez a feladat futtatásának alapértelmezett feltétele. A tevékenység úgy van megjelölve, mintha Upstream failed a feltétel nem teljesül.
  • Legalább egy sikeres: Legalább egy függőség sikeres volt. A tevékenység úgy van megjelölve, mintha Upstream failed a feltétel nem teljesül.
  • Egyik sem sikerült: Egyik függőség sem sikerült, és legalább egy függőség futott. A tevékenység úgy van megjelölve, mintha Upstream failed a feltétel nem teljesül.
  • Minden kész: A feladat az összes függőség futtatása után fut, függetlenül a függő futtatások állapotától. Ez a feltétel lehetővé teszi egy olyan tevékenység definiálását, amely a függő tevékenységek eredményétől függően fut.
  • Legalább egy sikertelen: Legalább egy függőség meghiúsult. A tevékenység úgy van megjelölve, mintha Excluded a feltétel nem teljesül.
  • Minden sikertelen: Minden függőség meghiúsult. A tevékenység úgy van megjelölve, mintha Excluded a feltétel nem teljesül.

Megjegyzés:

  • A hibák kezelésére konfigurált feladatok úgy vannak megjelölve, mintha Excluded a feltételük Run if nem teljesül. A kizárt tevékenységek kihagyva lesznek, és sikeresként lesznek kezelve.
  • Ha az összes tevékenységfüggőség ki van zárva, a tevékenység a feltételtől függetlenül Run if szintén ki lesz zárva.
  • Ha megszakít egy tevékenységfuttatást, a lemondás továbbterjed a lefelé irányuló tevékenységeken keresztül, és a sikertelenséget kezelő feltételekkel rendelkező Run if tevékenységek lefutnak, például annak ellenőrzéséhez, hogy a tevékenységfuttatás leállásakor lefut-e a törlési tevékenység.

Hogyan határozza meg az Azure Databricks Jobs a feladatfuttatás állapotát?

Az Azure Databricks Jobs a feladat levélfeladatainak eredménye alapján határozza meg, hogy egy feladat futtatása sikeres volt-e. A levélfeladat olyan tevékenység, amely nem rendelkezik alárendelt függőségekkel. A feladatok futtatásának három kimenete lehet:

  • Sikeres: Minden tevékenység sikeres volt.
  • Sikertelen volt: Egyes tevékenységek sikertelenek voltak, de az összes levélfeladat sikeres volt.
  • Sikertelen: Egy vagy több levélfeladat meghiúsult.

Elágaztatási logika hozzáadása a feladathoz a If/else condition tevékenységgel

If/else condition A feladat használatával logikai kifejezés alapján futtathatja a FELADAT DAG egy részét. A kifejezés egy logikai operátorból és egy operanduspárból áll, ahol az operandusok feladat- vagy tevékenységállapotra hivatkozhatnak feladat- és tevékenységparaméter-változók használatával, vagy tevékenységértékeket használhatnak.

Megjegyzés:

  • A numerikus és a nem numerikus értékek kezelése a logikai operátortól függően eltérő:
    • Az == operátorok != sztring-összehasonlítást végeznek az operandusaikról. Például hamis 12.0 == 12 értéket ad ki.
    • A >, >=és <= operátorok numerikus összehasonlítást végeznek az operandusaikról. Például 12.0 >= 12 igaz értéket ad ki, és 10.0 >= 12 hamis értéket ad ki.
    • Csak numerikus, sztring- és logikai értékek engedélyezettek az operandusban lévő tevékenységértékekre való hivatkozáskor. Bármely más típus esetén a feltételkifejezés sikertelen lesz. A nem numerikus értéktípusok sztringekre vannak szerializálva, és a kifejezésekben If/else condition sztringként vannak kezelve. Ha például egy tevékenységérték logikai értékre van állítva, akkor a rendszer szerializálja "true""false"vagy .

Feladatokat akkor vehet felIf/else condition, ha létrehoz egy feladatot, vagy szerkeszt egy feladatot egy meglévő feladatban. Feladat konfigurálása If/else condition :

  1. A Típus legördülő menüben válassza a If/else conditionlehetőséget.
  2. Az első Feltétel szövegmezőbe írja be a kiértékelendő operandust. Az operandus hivatkozhat feladat- vagy tevékenységparaméter-változóra vagy tevékenységértékre.
  3. Válasszon ki egy logikai operátort a legördülő menüből.
  4. A második Feltétel szövegmezőbe írja be a feltétel kiértékeléséhez szükséges értéket.

Tevékenységek függőségeinek If/else condition konfigurálása:

  1. Jelölje ki a If/else condition feladatot a DAG nézetben, és kattintson a + Feladat hozzáadása elemre.
  2. Miután megadta a tevékenység részleteit, kattintson a Függők gombra, és válassza ki <task-name><task-name> (true) a tevékenység nevétIf/else condition.
  3. Ismételje meg a feltétel kiértékelését a következőre false: .

Tegyük fel például, hogy van egy nevesített process_records feladat, amely olyan rekordokat tart fenn, amelyek nem érvényesek egy elnevezett bad_recordsértékben, és a feldolgozást annak alapján szeretné elágazni, hogy az érvénytelen rekordok megtalálhatók-e. Ha ezt a logikát hozzá szeretné adni a munkafolyamathoz, létrehozhat egy If/else condition feladatot egy olyan kifejezéssel, mint a {{tasks.process_records.values.bad_records}} > 0. Ezután hozzáadhat függő tevékenységeket a feltétel eredményei alapján.

Egy feladatot tartalmazó If/else condition feladat futtatása után megtekintheti a kifejezés eredményét és a kifejezés kiértékelésének részleteit, amikor megtekinti a feladatfuttatás részleteit a felhasználói felületen.