27. Bash Operators with macros 질문 (START_DATE, END_DATE)
60
작성한 질문수 4
airflow 3.* 를 기준으로 data_interval_start 나 data_interval_end 모두 같은 시간이 나와서 기존 gitHub 코드로 실습하니
기대했던 것과는 다른 log 결과가 반환 되었습니다.
이럴 경우 어떻게 코드를 수정해야 하는지 가르쳐주실 수 있을까요?
( 혹시 섹션 19에서 다루셨다면 미리 사과드립니다 .. )
답변 2
1
안녕하세요 diazepam57님!
네 맞습니다! airflow 3.0에서 data_interval_start와 end 변수가 동일하게 나오도록 변경됐습니다.
관련한 내용은 아래 섹션 19 의 Config 파라미터 변화 부분에서 다룹니다.

물론 처음부터 수강하시는 분들을 위해 Airflow 3.x 되면서 강의 내용에 변경된 사항들을 찾아가면서 공지를 띄우거나 수업노트에 변경사항을 수록해놓고 있는데, 이번 챕터 부분은 제가 놓친 것 같습니다.
이 챕터에도 안내사항을 좀 추가해두도록 하겠습니다.
알려주셔서 감사합니다 ^^
0
안녕하세요, 인프런 AI 인턴입니다. diazepam57님.
Apache Airflow의 Bash Operator에서 제공하는 data_interval_start와 data_interval_end는 주어진 execution_date와 스케줄을 기반으로 합니다. Airflow 3.x 버전에서는 일관되게 보이는 것처럼 느껴졌던 데이터가, 설정에 따라 의도한 대로 보이지 않을 수 있습니다. 이는 특히 시간대(timezone)나 사용한 매크로에 따라 다르게 작용될 수 있습니다.
현재 diazepam57님께서 faced한 문제는 START_DATE와 END_DATE가 서로 기대와 다르게 나오고 있다는 점입니다. 이 문제를 해결하기 위해 다음과 같은 내용을 점검할 수 있습니다.
해결 방법:
- Timezone 확인:
Europe/Berlin이 제대로 설정됐는지 확인합니다. 이는 DAG 정의에서default_args나 환경 변수 설정에서 조정될 수 있습니다.
from datetime import timedelta
from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.utils.dates import days_ago
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
'dags_bash_with_macros',
default_args=default_args,
description='A simple tutorial DAG',
schedule_interval=timedelta(days=1),
start_date=days_ago(2),
tags=['example'],
catchup=False,
)
t1 = BashOperator(
task_id='bash_task_1',
bash_command='echo {{ ts }}; echo {{ ts_end }}',
dag=dag,
env={
'START_DATE': "{{ data_interval_start.in_timezone('Europe/Berlin') }}",
'END_DATE': "{{ (data_interval_end - macros.timedelta(days=1)).in_timezone('Europe/Berlin') }}",
},
)
매크로 및 시간대 설정:
data_interval_end - timedelta(days=1)대신에 보다 명확하게 표현식을 사용하는 것이 좋습니다. 위 코드와 같이 매크로 내 계산을 명확히 표현해 보세요.Airflow 버전 차이: 과거 버전과의 차이를 참고로, 툴이나 매크로가 3.x 버전에서는 어떤 변화가 있었는지를 확인하세요. 이는 Airflow의 릴리즈 노트를 통해서 확인 가능합니다.
참고 자료
위 제안들이 개선점에 유용하기를 바랍니다. 이와 관련하여 이전의 비슷한 문제 또한 참고하시면 이해에 더 도움을 받을 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
pykrx 회원제 전환으로 인한 실습 불가
0
113
2
수료증 발급
0
82
3
에러 발생 관련 질문드립니다.
0
83
2
vscode 작업화면에 오류가 발생하지 않습니다.
0
69
2
plugins 폴더 생성
0
74
2
WSL에서 git push 가 안되요 ㅠ
0
113
2
chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.
0
66
2
github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ
0
731
2
설치중인데 venv를 꼭 써야할까요?
0
125
2
설치 버전 관련 질문입니다.
0
68
1
우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?
0
62
1
DAG 만들기 중 airflow 패키지 로드 에러
0
106
2
3.0에서도 수업노트가 성립하는지 확인 부탁드립니다!
0
95
3
task_id 사용법이 뭔가 바뀐 것 같습니다.
0
76
3
email operator 오류 관련
0
66
2
plugins 폴더 관련
0
99
2
bash operator 관련 문의입니다
0
78
3
스케쥴러 - DAG 파싱 부하 줄이는 과정 질문
0
79
2
Dags refresh 주기 관련 질문
0
124
2
wsl 관련 질문입니다.!
0
74
2
macOS에서 docker 설치
0
94
2
템플릿 변수에 대한 오류
0
61
2
custom_image 디렉토리 문의드립니다.
0
54
2
ETL 인터뷰 관련 문의
0
103
2





