Apache Airflow

[Airflow] execution_date

비번변경 2022. 8. 16. 19:46

execution_date

사전적으로 실행 날짜라는 의미인데 Airflow에서의 개념은 실제 실행 시점과는 관계가 없다.

Airflow에서 execution_date는 일종의 주문 번호(run id)이며, 그 값은 처리할 데이터의 시간 범위 중 가장 빠른 시점으로 결정된다.

 

예시를 들어 이해해보자.

 

예시

아래와 같이 매일 0시에 실행되고, 2021년 1월 1일을 기준으로 시작하는 test_dag가 있다고 하자.

DAG(
    dag_id='test_dag',
    schedule_interval='0 0 * * *',
    start_date=datetime.datetime(2021, 1, 1)
)

2022.08.15 - [Airflow] 스케쥴링에서도 정리했지만 test_dag의 실행 시점과 데이터 처리 범위는 아래 표와 같다.

작업 실행 시점 데이터 처리 범위
2021/01/02 00:00:00 2021/01/01 00:00:00 ~ 2021/01/01 23:59:59
2021/01/03 00:00:00  2021/01/02 00:00:00 ~ 2021/01/02 23:59:59
2021/01/04 00:00:00  2021/01/03 00:00:00 ~ 2021/01/03 23:59:59

이때 각 작업의 execution_date는 데이터 처리 범위의 가장 빠른 시점인 2021/01/01 00:00:00, 2021/01/02 00:00:00, 2021/01/03 00:00:00이 된다.

작업 실행 시점 데이터  처리 범위 execution_date
2021/01/02 00:00:00 2021/01/01 00:00:00 ~ 2021/01/01 23:59:59  2021/01/01 00:00:00
2021/01/03 00:00:00  2021/01/02 00:00:00 ~ 2021/01/02 23:59:59 2021/01/02 00:00:00
2021/01/04 00:00:00  2021/01/03 00:00:00 ~ 2021/01/03 23:59:59  2021/01/03 00:00:00

그림으로 보면 아래와 같다.

execution_date

 

 

의미

CLI 환경에서 run, test, backfill 등으로 DAG나 Task를 실행할 때 execution_date를 명시하지 않으면 실행되지 않는다.

usage: airflow test dag_id task_id execution_date

# 예시
airflow test test_dag print_hello 2022-08-22

예시는 test_dag의 print_hello를 2022-08-22이라는 날짜를 인자로 하여 실행하라는 뜻으로, Airflow에서 Task를 실제로 언제 실행하는지에는 관심이 없다.

Airflow가 execution_date를 요구하는 이유는 작업의 ID가 필요하기 때문이다. Airflow는 배치 처리에 적절하게 구성되어 있으며 동일한 작업을 정해진 시점에 정해진 시간 범위의 데이터를 가지고 반복해서 처리한다.

 

즉, execution_date는 dag run 인스턴스를 구분하는 ID가 되고 

dag run execution date

Task 인스턴스를 구분하는 ID가 된다.

Task 인스턴스 execution date

그리고 dag run 인스턴스와 Task 인스턴스 간의 관계 기준이 된다.

dag run 인스턴스
task 인스턴스

 

 

참고 문서

https://oboki.net/workspace/data-engineering/airflow/airflow-execution_date-이해하기/

https://blog.bsk.im/2021/03/21/apache-airflow-aip-39/

https://it-sunny-333.tistory.com/157

blog.naver.com/gyrbsdl18/221561318823

https://stackoverflow.com/questions/39612488/airflow-trigger-dag-execution-date-is-the-next-day-why