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ükRun 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 hamis12.0 == 12
értéket ad ki. - A
>
,>=
és<=
operátorok numerikus összehasonlítást végeznek az operandusaikról. Például12.0 >= 12
igaz értéket ad ki, és10.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 .
- Az
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
:
- A Típus legördülő menüben válassza a
If/else condition
lehetőséget. - 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.
- Válasszon ki egy logikai operátort a legördülő menüből.
- 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:
- Jelölje ki a
If/else condition
feladatot a DAG nézetben, és kattintson a + Feladat hozzáadása elemre. - 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
. - 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.