15

"매일 새벽 3시에 실행" 제대로 하기

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_datelogical_date처리 대상 데이터의 날짜
실제 실행 시간-data_interval_endDAG가 실제로 돌아가는 시간
에디터 로딩 중...

왜 이렇게 설계했을까?

데이터 파이프라인의 특성:

  • 1월 1일 데이터는 1월 1일이 끝나야 완전해진다
  • 1월 1일 23:59:59 데이터까지 포함하려면 1월 2일에 처리해야 함
에디터 로딩 중...

이 개념을 이해 못 하면 데이터가 하루씩 밀린다.