에어플로우에서 Start_date와 Schedule_interval은 처음에는 이 파라미터가 혼란스러울 수 있습니다. 중요한 개념인 3개를 구분하면 됩니다. start_date
, schedule_interval
, execution_date
start_date
: 스케줄러에 의해 DAG가 예약되기 시작하는 날짜
만약 2019년 3월 30일로 정의한다면, 2019년 3월 30일 자정부터 예약
schedule_interval
: DAG를 트리거하려는start_date
로부터의 시간 간격
start_date는 DAG가 예약된 처음의 시간
그 이후의 간격을 정하는 파라미터가 schedule_interavl
최선의 방법은 DAG 레벨에서 모든 작업에 대해 동일한 start_date
를 적용하는 것입니다.
task 수준에서 start_date
를 정의할 수 있지만, 절대로 권장하지 않습니다.
execution_date
: DAG가 실행된 시간의 전 단위schedule_interval
이 하루이고, Dag가 Run된 시간이 2024년 3월 2일이라면, execution_date
은 2024년 3월 1일입니다.execution_date
은 다릅니다. 이 execution_date
은 데이터를 처리할 기간의 시작점이라고 보면 좋습니다. 예를 들어서 2024년 3월 2일 자정에 데이터를 처리하는 TASK가 있다면, 해당 TASK는 2024년 3월 1일의 데이터를 처리해야합니다. 이렇게 보면 execution_date은 처리할 데이터의 시작점인 2024년 3월 1일로 설정되어 데이터를 처리합니다.DAG는 어떤 이유에서든지, 실패할 수 있습니다. 이 때 Catchup 파라미터는 실패된 DAG를 캐치해서 백필할 수 있게 해줍니다.
2022년 1월 2일을 execution_date
으로 가지는 DAG, 1월 3일인 DAG, 1월 4일인 DAG가 연달아 실패하고, DAG의 오류를 수정하고 DAG 실행 시간 기준으로, 1월 6일에 다시 스케줄링이 됐다면, Catchup
파라미터가 적용되어있을 경우, execution_date
을 1월 2일, 1월 3일, 1월 4일의 DAG를 다시 실행합니다.
start_date
은 1월 6일이며execution-date
은 각각 오류가 난 시점의 execution_date
값을 가집니다.이 파라미터를 적용하는 방법은 두 가지가 있습니다.
DAG의 정의에 catchup
파라미터를 True
혹은 False
로 설정합니다.
catchup이 True일 경우, 오류가 있던 Dag가 다시 스케줄대로 도는 경우, 이전 에러가 났던 모든 DAG 날짜에 대해서 실행시킵니다.
airflow.cfg
파일에서 catchup_by_default
를 True
혹은 False
로 지정합니다.
default 값은 True입니다.