분기(Branching)

Python으로 배우는 Apache Airflow 입문

Mike Metzger

Data Engineer

분기(Branching)

  • 조건부 로직 제공 (태스크에 대한 if → then)
  • @task.branch 사용

DNT_CURLY_TAG_2

  • 다음에 실행할 태스크 ID(또는 ID 목록)를 반환하는 파이썬 함수 실행
Python으로 배우는 Apache Airflow 입문

분기 예시

@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'
Python으로 배우는 Apache Airflow 입문

분기 예시

@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
Python으로 배우는 Apache Airflow 입문

분기 그래프 뷰

두 개의 다운스트림 태스크 경로가 있는 분기 DAG의 Airflow 그래프 뷰

Python으로 배우는 Apache Airflow 입문

분기 - 분기말 월

분기말 태스크가 실행되고 월간 태스크가 건너뛰어진 Airflow 그래프 뷰

Python으로 배우는 Apache Airflow 입문

분기 - 일반 월

일반 월간 태스크가 실행되고 분기말 태스크가 건너뛰어진 Airflow 그래프 뷰

Python으로 배우는 Apache Airflow 입문

날짜 변수

  • 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
Python으로 배우는 Apache Airflow 입문

연습해 봅시다!

Python으로 배우는 Apache Airflow 입문

Preparing Video For Download...