[Apache Airflow] date 정리

less than 1 minute read


date 정리

  • start_date & execution_date 정리
  • end_date 정리

start_date & execution_date 정리

  • default_args에 있는 start_date는 dag가 실행되는 시점이 아닌, 읽어야 하는 첫번째 데이터의 날짜를 가리킴
  • 아래 예시의 경우(daily job)
    • 읽어야 하는 데이터의 날짜: 2022-03-29
    • Dag 실행 시점: 2022-03-30
      • 이때, execution_date라는 변수는 2022-03-29가 됨
  • 🔗 schedule 시간 설정 시 유용한 사이트
  • 🔗 airflow 버전 참고
  • default_args의 catchup의 default는 True임
    • 따라서, 별다른 설정 없이 dag를 enable한다면 scheduler는 start_date으로부터 오늘까지 실행할 횟수를 계산 후 실행하게 됨
...
default_args = {
...
    'start_date': datetime(2022, 3, 29),
...
}
"""
오늘이 2022년 3월 29일 오후 11시인 경우 아래 dag는 3번 실행됨
아래는 딕셔너리 형태로 실제 실행 시점 & 실행시 execution_date(variable)의 값을 표현
실제 실행 시점: execution_date = {
  '2022-03-27 02:00': '2022-03-26 02:00', 
  '2022-03-28 02:00': '2022-03-27 02:00', 
  '2022-03-29 02:00': '2022-03-28 02:00'
}
"""
...
default_args = {
...
    'start_date': datetime(2022, 3, 26),
    'catchup': True
...
}
...
with DAG(
...
  schedule_interval="00 02 * * *",
...



end_date 정리

  • backfill 해야되는 경우 사용하게 됨
  • 아래의 경우 2022-03-26부터 2022-03-30의 데이터를 다시 가져와야하는 경우
...
default_args = {
...
    'start_date': datetime(2022, 3, 26),
    'end_date': datetime(2022, 3, 30)
...
}