TIL
Airflow에서의 Jinja Template - TIL230621
sunhokimDev
2023. 6. 22. 19:11
📐 Airflow에서 Jinja Template 사용하기
Jinja Template를 사용하면 Airflow의 Variables나 execution_date 등을 코드 내에서 쉽게 사용하기 좋다.
Jinja Template을 지원하는 Operator의 Parameter에서만 사용 가능하다.
BashOperator에서는 bash_command에서 Jinja Template를 사용할 수 있다.
아래는 그 예시이다.
# BashOperator를 사용하여 템플릿 작업 정의
task1 = BashOperator(
task_id='task1',
bash_command='echo "{{ ds }}"', # ds로 execution_date 나타냄
dag=dag
)
# 동적 매개변수가 있는 다른 템플릿 작업 정의
task2 = BashOperator(
task_id='task2',
bash_command='echo "안녕하세요, {{ params.name }}!"',
params={'name': 'John'}, # 사용자 정의 가능한 매개변수
dag=dag
)
BashOperator 레퍼런스를 보면, 아래처럼 (templated) 라고 명시된 항목에서는 Jinja Template 형태가 사용 가능하다.
더 많은 정보는 레퍼런스 참고 : https://airflow.apache.org/docs/apache-airflow/stable/_api/airflow/operators/bash/index.html
Airflow에서 사용 가능한 Jinja 변수들 몇 개 살펴보기
- {{ ds }} : 중간에 dash를 두고 열자리 연, 월, 일을 가져온다. (10자리)
- {{ ds_nodash }} : dash없이 연, 월, 일을 가져온다. (8자리)
- {{ ts }} : 타임스탬프 (초단위까지)
- {{ dag }} : DAG 이름, .을 붙여 더 자세한 정보 가능
- {{ task }} : task에 대한 정보, .을 붙여 더 자세한 정보 가능
- {{ var.value }} : 일반 value 형태로 저장된 variables 가져오기
- {{ var.value.get('my.var', 'fallback') }} : 저장된 my.var Varaible을 가져오고, 없으면 fallback 리턴
- {{ var.json }} : json 형태로 저장된 variables 가져오기
- {{ var.json.my_dict_var.key1 }} :: 저장된 my_dict_var을 가져오고, key1에 해당하는 value 리턴
- {{ conn.my_conn_id.login }} : 저장된 connection 정보 가져오기, my_conn_id의 login 정보 가져오기