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 jejich Run 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říklad 12.0 == 12 se vyhodnotí jako false.
    • Operátory >, >=a <= provádějí číselné porovnání jejich operandů. Například 12.0 >= 12 se vyhodnotí jako true a 10.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".

Ú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:

  1. V rozevírací nabídce Typ vyberte If/else condition.
  2. 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.
  3. V rozevírací nabídce vyberte logický operátor.
  4. Do druhého textového pole Podmínka zadejte hodnotu pro vyhodnocení podmínky.

Konfigurace závislostí pro If/else condition úlohu:

  1. If/else condition Vyberte úkol v zobrazení DAG a klikněte na + Přidat úkol.
  2. Po zadání podrobností úkolu klepněte na tlačítko Závisí na a vyberte <task-name> (true) , kde <task-name> je název If/else condition úkolu.
  3. 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í.