Airflow 날짜 개념

우상욱·2024년 3월 24일

Airflow Master Class

목록 보기
16/24

Airflow 날짜 Template 변수 이해


데이터 추출 예시

Daily ETL 처리를 위한 조회 쿼리(2023/02/25 0시 실행)

SELECT NAME, ADDRESS
FROM TBL_REG
WHERE REG_DATE BETWEEN TIMESTAMP(‘2023-02-24 00:00:00’)
AND TIMESTAMP(‘2023-02-24 23:59:59’)
  • 데이터 관점의 시작일 : 2023-02-24
  • 데이터 관점의 종료일 : 2023-02-25

  • 수행되고 있는 배치일이 2월 25일이라면
  • 데이터 관점에서 봤을 때, 데이터의 시작점은 2월 24일임
  • 즉 데이터 관점에서 논리적 기준일은 2월 24일
  • 배치가 돌고 있는 오늘의 날을 꺼내려면, date_interval_end를 사용해야함

예제


from airflow import DAG
from airflow.decorators import task
import pendulum
import datetime
import pprint

with DAG(
    dag_id="dags_python_show_templates",
    schedule="30 9 * * *",
    start_date=pendulum.datetime(2024, 3, 1, tz="Asia/Seoul"),
    catchup=True,
) as dag:

    @task(task_id="python_task")
    def show_templates(**kwargs):
        pprint.pprint(kwargs)

    show_templates()
  • 참고로 catchup을 True로 했기 때문에,
  • 2024년 3월 10일부터, 오늘 날짜까지를 전부 수행합니다.

  • 출력된 로그를 확인해봅니다.
  • date Interval Start는 오늘 작동해야하는 DAG의 배치 시간보다 한 단위 낮은 UTC 시간
  • date Interval End는 오늘 작동해야하는 DAG의 배치 시간의 UTC 시간입니다.
profile
데이터엔지니어

0개의 댓글