인프런 커뮤니티 질문&답변

kyou님의 프로필 이미지
kyou

작성한 질문수

Airflow 마스터 클래스

Airflow의 날짜개념

data_interval_start가 배치일로 나오는 이유 문의

작성

·

130

·

수정됨

0

안녕하세요.

우선 강사님, 좋은 강의 잘 듣고 있습니다.

 

[섹션 5. Template Variable > Airflow 날짜개념] 강의 관련하여 질문 드립니다.

 

Airflow 2.10.0 버전 사용 중이며, 강의와 같이 테스트를 진행하였는데, data_interval_start이 이전 배치일이 아닌 배치일로 나와서 문의드립니다.

DAG의 start_date를 2024년 9월 1일로 설정 후 소급 처리하였습니다. 아래와 같이 dag_run이 배치일일텐데, 왜 data_interval_start가 이전 배치일(2024.08.31)이 아닌 배치일로 나올까요?

'dag_run': <DagRun dags_python_show_templates @ 2024-09-01 00:30:00+00:00: scheduled__2024-09-01T00:30:00+00:00, state:running, queued_at: 2024-09-06 09:11:26.187022+00:00. externally triggered: False>,

'data_interval_end': DateTime(2024, 9, 2, 0, 30, 0, tzinfo=Timezone('UTC')),

'data_interval_start': DateTime(2024, 9, 1, 0, 30, 0, tzinfo=Timezone('UTC')),

'ds': '2024-09-01',

답변 2

0

kyou님의 프로필 이미지
kyou
질문자

강사님, 답변 감사합니다.

data_interval_start/end는 확실히 이해하였습니다.

 

다만, 강의에서와는 다르게 제 Airflow UI의 DAG Run에 대한 정보가 data_interval_end가 아닌 data_interval_start 일자로 출력되고 있어 더 헷갈렸던 것으로 생각됩니다. 나중에 운영 시 혼동을 일으킬 수도 있을 것 같네요ㅠ

Airflow Run dag 문의.jpg

혹시 이 부분에 대해서는 아시거나 추측되시는 부분이 있으신지 여쭤봅니다.

김현진님의 프로필 이미지
김현진
지식공유자

kyou 님

혹시 airflow 버전 업 되면서 RUN 메타정보가 data_interval_start --> data_interval_end 로 바뀌었나 싶어서 확인해봤는데 그런 내용은 없네요.

강의 내용 다시 살펴보니 제가 강의했던 영상에서도 RUN의 배치일 관련해서 data_interval_end 로 나오고 있습니다. 그래서 kyou 님이 보신 것과 차이는 없는 것 같아요.

image.png

 

아마 다른 부분하고 헷갈리신것 같은데 궁금하신건 또 문의주세요 ^^

kyou님의 프로필 이미지
kyou
질문자

강사님, 바쁘실텐데 답변 감사합니다.

이번 답글은 확인차 작성합니다ㅠ

 

Airflow UI에서 DAG 실행 정보 최상단에 dag_id와 Run 정보가 출력되는데,

강의에서의 Run 정보는 배치 일자인 data_interval_end로 출력되는 것이 확인됩니다.

실제 실행된 일자가 출력되는 것이 정상이라고 판단됩니다.

강의내용1.png

 

로컬 Airflow 2.10.0 버전에서의 Run 정보는 data_interval_end와 상이합니다.

data_interval_start를 참조하는 것으로 생각됩니다.

강의내용2.png

답글 작성 중 궁금하여 Github에서 Airflow UI 변경 이력을 확인했습니다.

결론은 2.9.2 버전부터 data_interval_start를 표시하도록 변경되었네요.

https://github.com/apache/airflow/commit/4dce7459d9728933629f917d60500a74c3f29213

  • Visible DAG RUN doesn’t point to the same dag run id (#38365)

 

아직 제가 Airflow 입문 단계라 왜 이렇게 결정된건지는 설명을 봐도 와닿진 않습니다.

직관적으로 data_interval_end를 보여주는게 맞지 않나 싶구요..

Airflow 날짜 개념 쉽지 않은 것 같습니다.

 

좋은 강의 계속 잘 듣도록 하겠습니다!

김현진님의 프로필 이미지
김현진
지식공유자

kyou님!

그걸 찾으시고 대단하시네요 ^^

airflow 날짜 개념은 헷갈리긴 하지만 왠만해서는 data_interval_start 기준이라고 생각하시는게 정신건강에 이롭습니다. airflow CLI 중 clear 또는 backfill 이라는 CLI 도 자주 사용하는데 그때 사용되는 -start_date 옵션 또는 -end_date 옵션 모두 data_interval_start 기준입니다.

쓰시다보며 좀 익숙해지실 거에요

화이팅입니다!

0

김현진님의 프로필 이미지
김현진
지식공유자

안녕하세요 kyou 님!

우선 kyou 님께서 헷갈리시는 것이, DAG의 start_date 자체가 data_interval_start 기준입니다.

그래서 start_date = 2024-09-01 로 설정하셨다면 data_interval_start = 2024-09-01 부터 시작하겠다는 의미입니다. 즉 data_interval_end 는 2024-09-02가 되는 것이죠.

따라서 배치일자 기준으로 2024-09-02부터 소급처리 되었다고 보시면 됩니다.

그래서 airflow는 철저하게 날짜 기준을 잡을 때는 data_interval_start 값이 기준이라는 것입니다.

 

남은 강의도 열공해서 잘 들으시길 바라고, 또 궁금한 것 있으면 언제든 남겨주세요 ^^

kyou님의 프로필 이미지
kyou

작성한 질문수

질문하기