Podmíněné spouštění úloh v úloze Azure Databricks
Ve výchozím nastavení se úloha úlohy spustí, když jsou její závislosti spuštěné a všechny byly úspěšné, ale můžete také nakonfigurovat úlohy v úloze Azure Databricks tak, aby běžely jenom v případě splnění konkrétních podmínek. Úlohy Azure Databricks podporují následující metody podmíněného spouštění úloh:
- Spuštění můžete určit , pokud závislosti pro spuštění úlohy na základě stavu spuštění závislostí úlohy. Můžete například použít
Run if
ke spuštění úlohy, i když některé nebo všechny její závislosti selhaly, což vaší úloze umožní zotavit se z selhání a pokračovat ve spuštění. - Úloha podmínky If/else se používá ke spuštění části daG úlohy na základě výsledků logického výrazu. Úkol
If/else condition
umožňuje přidat do úlohy logiku větvení. Například spouštění transformačních úloh pouze v případě, že nadřazená úloha příjmu dat přidá nová data. V opačném případě spusťte úlohy zpracování dat.
Run if
Přidání podmínky úkolu
Podmínku Run if
můžete nakonfigurovat při úpravě úkolu s jednou nebo více závislostmi. Chcete-li přidat podmínku do úkolu, vyberte podmínku z rozevírací nabídky Spustit, pokud závislosti v konfiguraci úlohy. Podmínka Run if
se vyhodnotí po dokončení všech závislostí úkolů. Podmínku Run if
můžete přidat také při přidání nového úkolu s jednou nebo více závislostmi.
Run if
možnosti podmínky
Do úkolu můžete přidat následující Run if
podmínky:
- Všechny úspěšné: Všechny závislosti byly spuštěny a úspěšné. Toto je výchozí podmínka pro spuštění úlohy. Úkol se označí jako
Upstream failed
v případě, že podmínka není vyříděná. - Alespoň jeden úspěch: Alespoň jedna závislost byla úspěšná. Úkol se označí jako
Upstream failed
v případě, že podmínka není vyříděná. - Žádné se nezdařilo: Žádné závislosti se nezdařily a spustila se aspoň jedna závislost. Úkol se označí jako
Upstream failed
v případě, že podmínka není vyříděná. - Hotovo: Úloha se spustí po spuštění všech závislostí bez ohledu na stav závislých spuštění. Tato podmínka umožňuje definovat úlohu, která se spouští bez závislosti na výsledku závislých úkolů.
- Nejméně jedna selhala: Nejméně jedna závislost selhala. Úkol se označí jako
Excluded
v případě, že podmínka není vyříděná. - Vše se nezdařilo: Všechny závislosti selhaly. Úkol se označí jako
Excluded
v případě, že podmínka není vyříděná.
Poznámka:
- Úlohy nakonfigurované tak, aby zpracovávaly chyby, se označí jako
Excluded
v případě, že je jejichRun if
podmínka nedostupná. Vyloučené úlohy se přeskočí a považují se za úspěšné. - Pokud jsou vyloučeny všechny závislosti úkolů, je úkol vyloučen i bez ohledu na jeho
Run if
podmínku. - Pokud zrušíte spuštění úlohy, zrušení se rozšíří prostřednictvím podřízených úkolů a úlohy s podmínkou
Run if
, která zpracovává selhání, například k ověření spuštění úlohy čištění při zrušení úkolu.
Jak úlohy Azure Databricks určují stav spuštění úlohy?
Úlohy Azure Databricks určují, jestli bylo spuštění úlohy úspěšné na základě výsledku úkolů typu list úlohy. Listový úkol je úkol, který nemá žádné podřízené závislosti. Spuštění úlohy může mít jeden ze tří výsledků:
- Úspěšné: Všechny úkoly byly úspěšné.
- Úspěšné s chybami: Některé úlohy selhaly, ale všechny úkoly typu list byly úspěšné.
- Nezdařilo se: Jeden nebo více úkolů typu list se nezdařilo.
Přidání logiky větvení do úlohy s úkolem If/else condition
If/else condition
Pomocí úlohy spusťte část daG úlohy na základě logického výrazu. Výraz se skládá z logického operátoru a dvojice operandů, kde operandy mohou odkazovat na úlohu nebo stav úkolu pomocí proměnných parametrů úlohy a úkolu nebo použít hodnoty úkolů.
Poznámka:
- Číselné a nečíselné hodnoty se zpracovávají jinak v závislosti na logickém operátoru:
- Operátory
==
a!=
provádějí porovnání řetězců jejich operandů. Například12.0 == 12
se vyhodnotí jako false. - Operátory
>
,>=
a<=
provádějí číselné porovnání jejich operandů. Například12.0 >= 12
se vyhodnotí jako true a10.0 >= 12
vyhodnotí se jako nepravda. - Při odkazování na hodnoty úkolů v operandu jsou povoleny pouze číselné, řetězcové a logické hodnoty . Všechny ostatní typy způsobí selhání výrazu podmínky. Nečíselné typy hodnot jsou serializovány na řetězce a jsou považovány za řetězce ve
If/else condition
výrazech. Pokud je například hodnota úkolu nastavena na logickou hodnotu, je serializována do"true"
nebo"false"
.
- Operátory
Úkol můžete přidat If/else condition
při vytváření úlohy nebo úpravě úkolu v existující úloze. If/else condition
Konfigurace úlohy:
- V rozevírací nabídce Typ vyberte
If/else condition
. - Do prvního textového pole Podmínka zadejte operand, který se má vyhodnotit. Operand může odkazovat na proměnnou parametru úlohy nebo úkolu nebo na hodnotu úkolu.
- V rozevírací nabídce vyberte logický operátor.
- Do druhého textového pole Podmínka zadejte hodnotu pro vyhodnocení podmínky.
Konfigurace závislostí pro If/else condition
úlohu:
If/else condition
Vyberte úkol v zobrazení DAG a klikněte na + Přidat úkol.- Po zadání podrobností úkolu klepněte na tlačítko Závisí na a vyberte
<task-name> (true)
, kde<task-name>
je názevIf/else condition
úkolu. - Opakujte pro podmínku, která se vyhodnocuje na
false
.
Předpokládejme například, že máte úkol s názvem process_records
, který udržuje počet záznamů, které nejsou platné v hodnotě s názvem bad_records
, a chcete větvet zpracování na základě toho, zda jsou nalezeny záznamy, které nejsou platné. Pokud chcete tuto logiku přidat do pracovního postupu, můžete vytvořit If/else condition
úkol s výrazem, jako je {{tasks.process_records.values.bad_records}} > 0
. Potom můžete přidat závislé úkoly na základě výsledků podmínky.
Po dokončení spuštění úlohy, která obsahuje If/else condition
úlohu, můžete zobrazit výsledek výrazu a podrobnosti vyhodnocení výrazu při zobrazení podrobností spuštění úlohy v uživatelském rozhraní.