Rozgałęzianie

Wprowadzenie do Apache Airflow w Pythonie

Mike Metzger

Data Engineer

Rozgałęzianie

  • Umożliwia logikę warunkową (tzn. jeśli → to dla zadań)
  • Za pomocą @task.branch

  • Uruchamia funkcję Pythona, która zwraca id następnego zadania (lub listę id)

Wprowadzenie do Apache Airflow w Pythonie

Przykład rozgałęziania

@task.branch
def branch_task(logical_date):
  if int(logical_date.month) % 3 == 0:
    # Months 3 - March, 6 - June, 9 - September, 12 - December
    return 'end_of_quarter_task'
  else:
    # All other months
    return 'regular_monthly_task'
Wprowadzenie do Apache Airflow w Pythonie

Przykład rozgałęziania

@task.branch
def branch_task(logical_date):
  if int(logical_date.month) % 3 == 0:
    # Months 3 - March, 6 - June, 9 - September, 12 - December
    return 'end_of_quarter_task'
  else:
    # All other months
    return 'regular_monthly_task'

start_task >> branch_task >> end_of_quarter_task >> end_of_quarter_task2
branch_task >> regular_monthly_task >> regular_monthly_task2
Wprowadzenie do Apache Airflow w Pythonie

Widok grafu rozgałęzienia

Widok grafu Airflow przedstawiający DAG z rozgałęzieniem i dwiema ścieżkami zadań podrzędnych

Wprowadzenie do Apache Airflow w Pythonie

Rozgałęzianie – miesiące końca kwartału

Widok grafu Airflow z uruchomionymi zadaniami końca kwartału i pominiętymi zadaniami miesięcznymi

Wprowadzenie do Apache Airflow w Pythonie

Rozgałęzianie – zwykłe miesiące

Widok grafu Airflow z regularnymi zadaniami miesięcznymi i pominiętymi zadaniami końca kwartału

Wprowadzenie do Apache Airflow w Pythonie

Zmienne daty

  • ds - Data logiczna z myślnikami RRRR-MM-DD
  • ds_nodash - Data logiczna bez myślników RRRRMMDD
  • prev_data_interval_start_success - Data ostatniego udanego uruchomienia DAG
  • Wiele innych – patrz dokumentacja zmiennych Airflow
1 https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html#templates-variables
Wprowadzenie do Apache Airflow w Pythonie

Czas na ćwiczenia!

Wprowadzenie do Apache Airflow w Pythonie

Preparing Video For Download...