15분
"매일 새벽 3시에 실행" 제대로 하기
Day 3: 매일 새벽 3시에 자동 실행
"매일 새벽 3시에 실행" 제대로 하기
Apache Airflow - 워크플로우 오케스트레이션 > Day 3: 매일 새벽 3시에 자동 실행
학습 목표
Airflow 스케줄링의 핵심 개념을 이해한다 execution_date와 logical_date의 차이를 안다
"왜 어제 데이터가 없어요?"
팀장: "1월 2일 데이터 확인해봐" 나: (쿼리 실행) "없는데요?" 팀장: "DAG 1월 2일에 돌았잖아" 나: "..."
Airflow 로그를 보니 1월 2일 03:00에 실행됐다. 그런데 처리한 데이터는 1월 1일 데이터였다.
왜?
Airflow의 시간 개념
핵심: "오늘 도는 DAG는 어제 데이터를 처리한다"
에디터 로딩 중...
schedule_interval='@daily' 의 의미:
- 매일 자정(00:00) 이후에 실행
- 이전 interval의 데이터를 처리
핵심 용어
| 용어 | Airflow 2.0 이전 | Airflow 2.0 이후 | 의미 |
|---|---|---|---|
| 데이터 기준 날짜 | execution_date | logical_date | 처리 대상 데이터의 날짜 |
| 실제 실행 시간 | - | data_interval_end | DAG가 실제로 돌아가는 시간 |
에디터 로딩 중...
왜 이렇게 설계했을까?
데이터 파이프라인의 특성:
- 1월 1일 데이터는 1월 1일이 끝나야 완전해진다
- 1월 1일 23:59:59 데이터까지 포함하려면 1월 2일에 처리해야 함
에디터 로딩 중...
이 개념을 이해 못 하면 데이터가 하루씩 밀린다.