컨테이너·워크플로우 자동화/Airflow로 워크플로우 자동화하기

Airflow에서 요일 기반 분기 — BranchDayOfWeekOperator 활용하기

Data Jun 2025. 10. 18. 22:23

Airflow 파이프라인에서는 요일에 따라 서로 다른 작업을 실행해야 할 때가 많습니다.
예를 들어, 평일에는 데이터 적재 작업을 하고 주말에는 백업 작업만 수행하는 경우죠.
이럴 때 유용하게 사용할 수 있는 것이 바로
👉 BranchDayOfWeekOperator 입니다.

 

BranchDayOfWeekOperator란?

BranchDayOfWeekOperator는 현재 실행되는 날짜의 요일을 기준으로 분기를 수행하는 오퍼레이터입니다.
특정 요일에는 한 태스크로, 그 외 요일에는 다른 태스크로 작업 흐름을 나눌 수 있습니다.

 

코드 예시

from airflow.operators.empty import EmptyOperator
from airflow.operators.weekday import BranchDayOfWeekOperator
from default_dag import create_dag

dag = create_dag("BranchDayOfWeekOperator")

# 분기 이후 실행될 태스크
weekday_task = EmptyOperator(
    task_id='weekday_task',
    dag=dag,
)

weekend_task = EmptyOperator(
    task_id='weekend_task',
    dag=dag,
)

# 요일 기반 분기 오퍼레이터
branch_task = BranchDayOfWeekOperator(
    task_id='branch_by_day',
    week_day=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
    follow_task_ids_if_true=['weekday_task'],
    follow_task_ids_if_false=['weekend_task'],
    use_task_execution_day=True,
    dag=dag,
)

# 의존 관계 설정
branch_task >> [weekday_task, weekend_task]

주요 파라미터 설명

파라미터 설명
 week_day 분기 기준으로 사용할 요일 리스트 ('Monday', 'Friday' 등)
follow_task_ids_if_true 지정된 요일일 때 실행할 태스크 ID
follow_task_ids_if_false 그 외 요일일 때 실행할 태스크 ID
use_task_execution_day True면 DAG의 실행 날짜를 기준으로 판단

 

 

실행 도식 (ASCII DAG 구조)

         +--------------------+
         |  branch_by_day     |
         | (Branch Operator)  |
         +--------------------+
                    │
        ┌───────────┴────────────┐
        │                        │
        ▼                        ▼
+----------------+       +----------------+
|  weekday_task  |       |  weekend_task  |
| (EmptyOperator)|       | (EmptyOperator)|
+----------------+       +----------------+

 

동작 예시

날짜 요일 실행되는 태스크
2025-10-13 월요일 weekday_task
2025-10-18 토요일 weekend_task
2025-10-19 일요일 weekend_task

 

 

정리하면

 

BranchDayOfWeekOperator는 DAG 실행 날짜의 요일을 기준으로
서로 다른 작업 경로를 실행할 수 있는 간단한 분기 오퍼레이터입니다.

평일/주말, 특정 요일별로 다른 작업을 수행해야 할 때 매우 유용합니다.