Ветвление

Введение в Apache Airflow на Python

Mike Metzger

Data Engineer

Ветвление

  • Реализует условную логику (если → то для задач)
  • Используется @task.branch

  • Запускает функцию Python и возвращает id следующей задачи (или список id)

Введение в Apache Airflow на Python

Пример ветвления

@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'
Введение в Apache Airflow на Python

Пример ветвления

@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
Введение в Apache Airflow на Python

Граф ветвления

Граф Airflow для DAG с ветвлением и двумя путями выполнения задач

Введение в Apache Airflow на Python

Ветвление: конец квартала

Граф Airflow: задачи конца квартала выполнены, ежемесячные задачи пропущены

Введение в Apache Airflow на Python

Ветвление: обычные месяцы

Граф Airflow: обычные ежемесячные задачи выполнены, задачи конца квартала пропущены

Введение в Apache Airflow на Python

Переменные дат

  • ds — логическая дата с разделителями YYYY-MM-DD
  • ds_nodash — логическая дата без разделителей YYYYMMDD
  • prev_data_interval_start_success — дата последнего успешного запуска DAG
  • Другие переменные — см. документацию Airflow
1 https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html#templates-variables
Введение в Apache Airflow на Python

Давайте потренируемся!

Введение в Apache Airflow на Python

Preparing Video For Download...