Jinja 템플릿 활용

Python으로 배우는 Apache Airflow 입문

Mike Metzger

Data Engineer

템플릿이란?

  • Airflow가 정보를 자동으로 대체하는 형식
  • 주로 일반 텍스트 / 텍스트 파일
  • 접근 및 재사용 간소화

 

대체 값의 플레이스홀더가 있는 템플릿 예시

Python으로 배우는 Apache Airflow 입문

Jinja란?

  • 간단한 텍스트 기반 템플릿 언어
  • Airflow 외 다양한 도구에서 사용
  • {{ ... }}는 템플릿 대체를 의미
    • Python f-string과 유사
  • for 루프 등 동적 사용 지원

이중 중괄호 대체를 사용하는 Jinja 템플릿 예시

Python으로 배우는 Apache Airflow 입문

Airflow Jinja 함수

  • logical_date: DAG 실행 시점
  • ds: YYYY-MM-DD 형식의 logical_date
  • logical_date.year, logical_date.month, logical_date.day: 날짜 구성 요소 접근
  • params: DAG 실행의 런타임 파라미터
  • 계산, 루프 등 다양한 기능
    • macros.ds_add: 날짜 계산 지원
Python으로 배우는 Apache Airflow 입문

SmtpNotifier 사용 예시

  • 제목 필드에 대체 적용
@dag(dag_id=`sales_etl`,
     on_failure_callback=SmtpNotifier(
         to='[email protected]',
         from_email='[email protected]',

subject='sales_etl on {{ logical_date }} has failed!' ) )
  • Subject: sales_etl on 2026-04-30 failed!
Python으로 배우는 Apache Airflow 입문

FileSensor 사용 예시

  • 파일 경로를 동적으로 구성
  • ds(logical_date, YYYY-MM-DD) 하루 전 파일 탐색
  • macros.ds_add 사용
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • ds가 2026-04-30이면 경로는 /data/2026-04-29/input.csv
Python으로 배우는 Apache Airflow 입문

Jinja 참고 사항

  • 모든 곳에 사용할 수 없습니다
  • 템플릿 속성은 문서를 참조하세요
  • 코드 뷰를 확인하세요

DAG 정의 Python 소스를 표시하는 Airflow DAG 코드 뷰

Python으로 배우는 Apache Airflow 입문

연습해 봅시다!

Python으로 배우는 Apache Airflow 입문

Preparing Video For Download...