데이터 파이프라인을 구성하다 보면
"특정 날짜에만 실행해야 하는 작업" 이나
"특정 기간 동안만 동작하는 로직" 이 필요한 경우가 있습니다.
이럴 때 유용하게 쓸 수 있는 것이 바로
👉 BranchDateTimeOperator 입니다.
BranchDateTimeOperator란?
BranchDateTimeOperator는 Airflow의 Branch Operator 중 하나로,
현재 실행 시각(execution_date)이 특정 기간 안에 포함되는지를 판단하여
실행할 태스크를 분기합니다.
즉, “날짜 조건문(if)” 역할을 하는 오퍼레이터라고 생각하면 됩니다.
기본 구조 예시
from airflow.operators.empty import EmptyOperator
from airflow.operators.branch import BranchDateTimeOperator
from default_dag import create_dag
import pendulum
dag = create_dag('BranchDateTimeOperator')
# 분기 이후 실행될 더미 태스크
empty_task_1 = EmptyOperator(
task_id='date_in_range_machine',
dag=dag,
)
empty_task_2 = EmptyOperator(
task_id='date_outside_range_machine',
dag=dag,
)
# 날짜 기반 분기 오퍼레이터
cond_task_machine = BranchDateTimeOperator(
task_id='datetime_branch_machine',
follow_task_ids_if_true=['date_in_range_machine'],
follow_task_ids_if_false=['date_outside_range_machine'],
target_upper=pendulum.datetime(2023, 8, 13, 0, 0, 0),
target_lower=pendulum.datetime(2023, 8, 11, 0, 0, 0),
dag=dag,
)
# 태스크 의존 관계 설정
cond_task_machine >> [empty_task_1, empty_task_2]
동작 방식
| 항목 | 설명 |
| target_lower | 기준 기간의 시작 시간 |
| target_upper | 기준 기간의 종료 시각 |
| follow_task_ids_if_false | 현재 시간이 범위 안에 있을 때 실행할 태스크 |
| follow_task_ids_if_false | 범위 밖일 때 실행할 태스크 |
실행 예시
| 실행 시각 | 실행되는 태스크 |
| 2023-08-12 10:00 | date_in_range_machine |
| 2023-08-14 09:00 | date_outside_ragne_machine |
즉,
- 8월 11일 ~ 8월 13일 사이면 date_in_range_machine 실행
- 그 외에는 date_outside_range_machine 실행
EmptyOperator
empty_task_1 = EmptyOperator(task_id='date_in_range_machine')
empty_task_2 = EmptyOperator(task_id='date_outside_range_machine')
- 이 두 태스크는 실제 로직이 없는 단순한 "더미 태스크"입니다.
- BranchDateTimeOperator의 분기 결과를 시각적으로 확인하기 위한 용도입니다.
- 실제 환경에서는 이 자리에 BashOperator, PythonOperator 등
진짜 로직이 들어가게 됩니다.
의존 관계
cond_task_machine >> [empty_task_1, empty_task_2]
이 구문은 태스크 실행 순서(Dependency) 를 정의합니다.
즉,
cond_task_machine
↓
┌────────────────────────┐
│ │
empty_task_1 empty_task_2
- cond_task_machine이 먼저 실행되고,
- 결과에 따라 둘 중 하나의 태스크만 실행됩니다.
- 실행되지 않은 태스크는 자동으로 skipped 상태가 됩니다.
정리하면
- BranchDateTimeOperator = 날짜 기반 if 조건문
- 특정 날짜 범위 안/밖 여부에 따라 분기 실행
- 복잡한 파이썬 로직 없이 간단한 스케줄 제어 가능
'컨테이너·워크플로우 자동화 > Airflow로 워크플로우 자동화하기' 카테고리의 다른 글
| Airflow에서 SubDAG 대신 TaskGroup 사용하기 (0) | 2025.10.18 |
|---|---|
| Airflow에서 요일 기반 분기 — BranchDayOfWeekOperator 활용하기 (0) | 2025.10.18 |
| BranchOperator vs BranchPythonOperator 비교 (0) | 2025.10.18 |
| Airflow BranchOperator로 조건 분기 처리하기 (0) | 2025.10.18 |
| Airflow Sensor의 soft_fail 이해하기 (0) | 2025.10.18 |