Warunkowe uruchamianie zadań w zadaniu usługi Azure Databricks

Domyślnie zadanie zadania podrzędnego jest uruchamiane, gdy jego zależności zostały uruchomione i wszystkie zakończyły się pomyślnie, ale można również skonfigurować zadania w zadaniu usługi Azure Databricks do uruchamiania tylko wtedy, gdy zostaną spełnione określone warunki. Zadania usługi Azure Databricks obsługują następujące metody warunkowego uruchamiania zadań:

  • Możesz określić opcję Uruchom, jeśli zależności mają być uruchamiane zadanie na podstawie stanu uruchomienia zależności zadania. Można na przykład użyć Run if polecenia , aby uruchomić zadanie nawet wtedy, gdy niektóre lub wszystkie jego zależności zakończyły się niepowodzeniem, co umożliwi zadanie odzyskanie sprawności po awarii i kontynuowanie działania.
  • Zadanie warunku If/else służy do uruchamiania części zadania DAG na podstawie wyników wyrażenia logicznego. Zadanie If/else condition umożliwia dodawanie logiki rozgałęziania do zadania. Na przykład uruchom zadania przekształcania tylko wtedy, gdy zadanie pozyskiwania nadrzędnego dodaje nowe dane. W przeciwnym razie uruchom zadania przetwarzania danych.

Run if Dodawanie warunku zadania

Warunek można skonfigurować podczas edytowania Run if zadania z co najmniej jedną zależnością. Aby dodać warunek do zadania, wybierz warunek z menu rozwijanego Uruchom, jeśli zależności w konfiguracji zadania. Warunek Run if jest obliczany po zakończeniu wszystkich zależności zadań. Możesz również dodać warunek podczas dodawania Run if nowego zadania z co najmniej jedną zależnością.

Run if opcje warunku

Do zadania można dodać następujące Run if warunki:

  • Wszystkie zakończone pomyślnie: wszystkie zależności zostały uruchomione i zakończyły się pomyślnie. Jest to domyślny warunek uruchamiania zadania. Zadanie jest oznaczone tak, jakby Upstream failed warunek był niezaspokojony.
  • Co najmniej jedna powiodła się: co najmniej jedna zależność zakończyła się pomyślnie. Zadanie jest oznaczone tak, jakby Upstream failed warunek był niezaspokojony.
  • Brak nie powiodło się: Żadna z zależności nie powiodła się i co najmniej jedna zależność została uruchomiona. Zadanie jest oznaczone tak, jakby Upstream failed warunek był niezaspokojony.
  • Wszystko gotowe: zadanie jest uruchamiane po uruchomieniu wszystkich jego zależności, niezależnie od stanu przebiegów zależnych. Ten warunek umożliwia zdefiniowanie zadania, które jest uruchamiane bez względu na wynik jego zadań zależnych.
  • Co najmniej jedna nie powiodła się: co najmniej jedna zależność nie powiodła się. Zadanie jest oznaczone tak, jakby Excluded warunek był niezaspokojony.
  • Wszystkie nie powiodły się: wszystkie zależności zakończyły się niepowodzeniem. Zadanie jest oznaczone tak, jakby Excluded warunek był niezaspokojony.

Uwaga

  • Zadania skonfigurowane do obsługi niepowodzeń są oznaczane tak, jakby Excluded ich Run if warunek był niezaspokojony. Wykluczone zadania są pomijane i traktowane jako pomyślne.
  • Jeśli wszystkie zależności zadań są wykluczone, zadanie jest również wykluczone, niezależnie od jego Run if warunku.
  • Jeśli anulujesz przebieg zadania, anulowanie jest propagowane za pośrednictwem podrzędnych zadań i podzadań z Run if warunkiem, który obsługuje niepowodzenie, są uruchamiane, na przykład w celu zweryfikowania uruchomienia zadania oczyszczania po anulowaniu uruchomienia zadania.

Jak zadania usługi Azure Databricks określają stan uruchomienia zadania?

Zadania usługi Azure Databricks określają, czy przebieg zadania zakończył się pomyślnie na podstawie wyniku zadań liści zadania. Zadanie liścia to zadanie, które nie ma zależności podrzędnych. Uruchomienie zadania może mieć jeden z trzech wyników:

  • Powodzenie: wszystkie zadania zakończyły się pomyślnie.
  • Powodzenie z błędami: niektóre zadania zakończyły się niepowodzeniem, ale wszystkie zadania liścia zakończyły się pomyślnie.
  • Niepowodzenie: co najmniej jedno zadanie liścia nie powiodło się.

Dodawanie logiki rozgałęziania do zadania za pomocą If/else condition zadania

If/else condition Użyj zadania , aby uruchomić część zadania DAG na podstawie wyrażenia logicznego. Wyrażenie składa się z operatora logicznego i pary operandów, gdzie operandy mogą odwoływać się do zadania lub stanu zadania przy użyciu zmiennych parametrów zadania i zadania lub używać wartości zadań.

Uwaga

  • Wartości liczbowe i nieliczbowe są obsługiwane inaczej w zależności od operatora logicznego:
    • Operatory == i != wykonują porównanie ciągów ich operandów. Na przykład 12.0 == 12 daje wartość false.
    • Operatory >, >=i <= wykonują porównania liczbowe ich operandów. Na przykład 12.0 >= 12 oblicza wartość true i 10.0 >= 12 oblicza wartość false.
    • W przypadku odwoływania się do wartości zadań w operandie dozwolone są tylko wartości liczbowe, ciągowe i logiczne. Wszystkie inne typy spowodują niepowodzenie wyrażenia warunku. Typy wartości nieliczbowych są serializowane do ciągów i są traktowane jako ciągi w wyrażeniach If/else condition . Jeśli na przykład wartość zadania jest ustawiona na wartość logiczną, jest serializowana na "true" wartość lub "false".

Zadanie można dodać If/else condition podczas tworzenia zadania lub edytowania zadania w istniejącym zadaniu . Aby skonfigurować If/else condition zadanie:

  1. W menu rozwijanym Typ wybierz pozycję If/else condition.
  2. W pierwszym polu tekstowym Warunek wprowadź operand, który ma zostać oceniony. Operand może odwoływać się do zmiennej zadania lub parametru zadania lub wartości zadania.
  3. Wybierz operator logiczny z menu rozwijanego.
  4. W drugim polu tekstowym Warunek wprowadź wartość oceniania warunku.

Aby skonfigurować zależności dla If/else condition zadania:

  1. If/else condition Wybierz zadanie w widoku DAG i kliknij pozycję + Dodaj zadanie.
  2. Po wprowadzeniu szczegółów zadania kliknij pozycję Zależy od i wybierz <task-name> (true) , gdzie <task-name> jest nazwą If/else condition zadania.
  3. Powtórz element dla warunku oceniania wartości .false

Załóżmy na przykład, że masz zadanie o nazwie process_records , które utrzymuje liczbę rekordów, które nie są prawidłowe w wartości o nazwie bad_records, i chcesz rozgałęzić przetwarzanie na podstawie tego, czy rekordy, które nie są prawidłowe, są znalezione. Aby dodać tę logikę If/else condition do przepływu pracy, możesz utworzyć zadanie z wyrażeniem takim jak {{tasks.process_records.values.bad_records}} > 0. Następnie można dodać zadania zależne na podstawie wyników warunku.

Po zakończeniu przebiegu zadania zawierającego If/else condition zadanie można wyświetlić wynik wyrażenia i szczegóły oceny wyrażenia podczas wyświetlania szczegółów uruchomienia zadania w interfejsie użytkownika.