JUST DO IT!

Airflow에서의 Jinja Template - TIL230621 본문

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 정보 가져오기