본문 바로가기

Data Mining & Distributed/Airflow

[ Airflow ] 1년에 한 번 실행 되는 DAG 설정으로 excution_date 이해하기

반응형

Airflow에서 start_date를 2023년과 2024년으로 설정한 경우, 2024년 10월 1일에 한 번 실행되는 DAG의 실행 가능 여부를 이해하려면 Airflow의 start_date, execution_date, 그리고 schedule_interval의 동작을 알아야 합니다.
현재는 2024년 8월 1일로 가정합니다.


 

1. Airflow의 핵심 동작 원리

  1. start_date:
    • DAG의 스케줄 계산이 시작되는 기준 날짜.
    • Airflow는 start_date 이후부터 schedule_interval을 기준으로 실행 일정을 계산합니다.
  2. execution_date:
    • Airflow는 과거의 데이터를 처리하기 위해 예약된 실행 날짜(execution_date) 기준으로 실행합니다.
    • DAG가 실제 실행되는 시간은 execution_date 이후입니다.
  3. schedule_interval:
    • DAG가 언제 실행될지 결정합니다.
    • 예: schedule_interval='0 0 1 10 *'는 매년 10월 1일 00:00에 실행되도록 예약합니다.

 

2. 조건: 2024년 10월 1일에만 실행되도록 설정

예제 DAG

from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'catchup': True,  # 과거 스케줄도 실행하도록 설정
}

with DAG(
    'single_execution_example',
    default_args=default_args,
    start_date=datetime(2023, 1, 1),  # 또는 datetime(2024, 1, 1)
    schedule_interval="0 0 1 10 *",  # 매년 10월 1일 실행
    description="DAG to run on October 1, 2024",
) as dag:
    task = DummyOperator(task_id='run_once')

 

3. start_date가 2023년 1월 1일인 경우

  • start_date=datetime(2023, 1, 1)
  • schedule_interval="0 0 1 10 *"

실행 계산

  1. Airflow는 start_date인 2023년 1월 1일 이후부터 schedule_interval에 따라 실행을 예약합니다.
  2. 2024년의 스케줄:
    • 10월 1일 00:00 (실제 실행: 2024년 10월 1일).

결과

  • DAG는 2023년 10월 1일에 실행 되지 않습니다. DAG는 2024년 10월 1일에 각각 실행됩니다.

 

4. start_date가 2024년 1월 1일인 경우

  • start_date=datetime(2024, 1, 1)
  • schedule_interval="0 0 1 10 *"

실행 계산

  1. Airflow는 start_date인 2024년 1월 1일 이후부터 schedule_interval에 따라 실행을 예약합니다.
  2. 2025년의 스케줄:
    • 10월 1일 00:00 (실제 실행: 2025년 10월 1일).

결과

  • DAG는 2025년 10월 1일에만 실행됩니다.
  • 2024년의 스케줄은 1년 전 데이터부터 처리하는 동작 방식에 의해서 실행되지 않습니다.
  • DAG는 2025년 10월 1일에 각각 실행됩니다.

 

5. 요약 비교

조건 2023년 1월 1일 start_date 2024년 1월 1일 start_date
2023년 10월 1일 실행 실행되지 않음 실행되지 않음
2024년 10월 1일 실행 실행됨 실행되지 않음
2025년 10월 1일 실행 실행됨 실행됨

 

6. 설명

  1. Airflow는 start_date 이후부터만 DAG의 스케줄을 계산합니다.
  2. start_date가 2023년이면, 2023년의 10월 1일 스케줄도 포함 되지 않습니다. 2023년 10월 1일 스케쥴을 포함하려면 2022년 10월 1일 이전으로 start_date를 설정해야 합니다.
  3. start_date가 2024년이면, 2023년의 스케줄은 무시되고 2024년의 스케쥴도 무시되고 2025년 10월 1일부터 실행됩니다.

 

7. 추천 설정

  • 2024년 10월 1일에만 실행되도록 설정하려면:
  start_date=datetime(2024, 10, 1)
  schedule_interval=None  # 단일 실행을 원할 경우

또는

  start_date=datetime(2024, 1, 1)
  schedule_interval="0 0 1 10 *"
  catchup=False  # 과거 실행 방지

이 설정으로 원하는 실행 결과를 얻을 수 있습니다. 😊

반응형