[Airflow] Airflow의 날짜 개념

2024. 7. 23. 13:42·Minding's Programming/Airflow
728x90
반응형

Airflow 날짜 Template 변수

 

Airflow는 Airbnb에서 개발 시 ETL 도구로써 개발했기 때문에, Airflow의 날짜 개념을 이해하기 위해서는 '데이터 관점'에서의 날짜를 바라볼 수 있어야 한다.

 

예를 들어 하루마다 주기적으로 수행되는 일 배치의 워크플로우가 있다고 생각해보자. 이 워크플로우는 배치 실행 일 기준 전 날 00시부터 23시 59분까지의 데이터를 추출하는 task를 가지고 있다.

그렇게 됐을 때, 데이터 관점에서의 시작 일은 배치를 실행하고 있는 오늘이 아닌 어제인 것이다.

(ex. 25일에 task 실행, 데이터는 24일 00:00~24일 23:59 까지의 데이터이므로 data의 시작 일은 25일이 아닌 24일)

 

이는 Airflow의 Template 변수를 출력해보아도 알 수 있다. 아래 템플릿들은 데이터 관점 기준 시작일을 나타낸다.

  • data_interval_start
  • dag_run.logical_date
  • ds (yyyy-mm-dd 형식 출력)
  • ts (타임스탬프)

그리고 아래 템플릿은 배치가 실행되었거나 실행되고 있는, 종료일을 나타낸다.

  • data_interval_end

 

모든 templates 변수 PythonOperator로 출력해보기

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

with DAG(
    dag_id = 'dags_python_show_templates',
    schedule = "30 9 * * *", # daily
    start_date = pendulum.datetime(2024, 7, 10, tz="Asia/Seoul"),
    catchup = True, # 7월 10일부터 현재 날짜까지를 모두 수행
    tags=["practice"]
) as dag:
    
    @task(task_id = 'python_task')
    def show_templates(**kwargs):
        from pprint import pprint
        pprint(kwargs)

    show_templates()

kwargs 딕셔너리에 따로 삽입을 하지 않은 채 kwargs 딕셔너리를 출력해보는 함수를 만들어서 실행시키는 DAG을 만들어보았다. 또한 catchup=True로 설정하여 7월 10일부터 현재날짜까지 모두 소급하여 워크플로우를 실행하도록 했다.

 

그리고 서버에 올려 DAG을 실행 시킨 뒤 소급 적용된 날짜 중 하루인 7월 18일의 log를 확인해보았다.

 

'data_interval_end': DateTime(2024, 7, 18, 0, 30, 0, tzinfo=Timezone('UTC')),
'data_interval_start': DateTime(2024, 7, 17, 0, 30, 0, tzinfo=Timezone('UTC')),
'ds': '2024-07-17',
'ds_nodash': '20240717',

 

위와 같이 7월 18일(9시 30분 실행)의 로그 데이터를 살펴본 결과, start 시간이 7월 17일 0시 30분, end 시간이 7월 18일 0시 30분으로 출력되었다. (UTC 기준으로 우리 나라 시간보다 9시간 느리다.) 위 데이터 관점의 시간 개념과 일치한다.

728x90

'Minding's Programming > Airflow' 카테고리의 다른 글

[Airflow/Xcom] Airflow에서 Xcom 사용해보기  (0) 2024.07.23
[Airflow/Macros] Airflow에서 macros(매크로) 사용해보기  (3) 2024.07.23
[Python/Jinja/Airflow] Jinja 템플릿과 Airflow에서의 사용방법  (2) 2024.07.22
[Airflow] Python Operator의 op_args, op_kwargs  (1) 2024.07.22
[Python] 파이썬 함수 파라미터 *args와 **kwargs  (0) 2024.07.22
'Minding's Programming/Airflow' 카테고리의 다른 글
  • [Airflow/Xcom] Airflow에서 Xcom 사용해보기
  • [Airflow/Macros] Airflow에서 macros(매크로) 사용해보기
  • [Python/Jinja/Airflow] Jinja 템플릿과 Airflow에서의 사용방법
  • [Airflow] Python Operator의 op_args, op_kwargs
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    야구
    파이썬게임개발
    머신러닝
    게임개발
    칼만필터
    mlb stats api
    django python
    파이썬
    딥러닝
    데이터분석
    질롱코리아
    데이터 엔지니어
    pygame
    프로그래머스
    코딩테스트
    Airflow
    칼만필터는어렵지않아
    칼만필터는어렵지않아파이썬
    칼만필터는어렵지않아python
    MLB
    FastAPI
    파이게임
    에어플로우
    Python
    django
    AWS
    KBO
    메이저리그
    KalmanFilter
    넘파이
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Airflow] Airflow의 날짜 개념
상단으로

티스토리툴바