에어플로우에서 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입니다.