Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spark Partitioning
- redshift
- off heap memory
- etl
- AQE
- Spark Caching
- Spark 실습
- backfill
- Kafka
- Dag
- mysql
- Docker
- topic
- Spark
- spark executor memory
- disk spill
- Salting
- CI/CD
- 데이터 파이프라인
- 빅데이터
- Spark SQL
- aws
- Kubernetes
- Speculative Execution
- Airflow
- colab
- DataFrame Hint
- k8s
- SQL
- KDT_TIL
Archives
- Today
- Total
JUST DO IT!
Airflow에서의 Jinja Template - TIL230621 본문
📐 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 정보 가져오기
'TIL' 카테고리의 다른 글
Airflow Task Grouping과 Dynamic Dags 알아보기 - TIL230621 (0) | 2023.06.22 |
---|---|
Airflow Trigger와 Sensor로 Dag Dependencies 설정하기 - TIL230621 (0) | 2023.06.22 |
Airflow REST API 간단히 사용해보기(with Python) - TIL230620 (0) | 2023.06.22 |
Airflow 에러 발생 시 Slack 알림받아보기 - TIL230619 (0) | 2023.06.21 |
Docker Container 관리에 중요한 K8s 알아보기 - TIL230616 (0) | 2023.06.20 |