Templating dengan Jinja

Pengantar Apache Airflow dengan Python

Mike Metzger

Data Engineer

Apa itu template?

  • Format terdefinisi yang memungkinkan Airflow mengganti informasi secara otomatis
  • Sering berupa teks biasa/berkas teks
  • Mempermudah akses dan penggunaan ulang

 

Ilustrasi template dengan placeholder untuk nilai pengganti

Pengantar Apache Airflow dengan Python

Apa itu Jinja?

  • Bahasa templating berbasis teks yang sederhana
  • Dipakai di banyak alat selain Airflow
  • {{ ... }} mewakili substitusi template
    • Mirip f-string di Python
  • Lebih dinamis; mendukung for loop

Ilustrasi template Jinja dengan substitusi kurung ganda

Pengantar Apache Airflow dengan Python

Fungsi Jinja di Airflow

  • logical_date: Waktu run Dag terjadi
  • ds: logical_date dalam format YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day: Akses komponen tanggal
  • params: Parameter runtime dari run Dag
  • Perhitungan, loop, dan lainnya
    • macros.ds_add: Mendukung perhitungan tanggal
Pengantar Apache Airflow dengan Python

Contoh dengan SmtpNotifier

  • Substitusi di bidang subject
@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!
Pengantar Apache Airflow dengan Python

Contoh dengan FileSensor

  • Konfigurasikan filepath secara dinamis
  • Cari berkas pada hari sebelum ds (logical_date dalam YYYY-MM-DD )
  • Gunakan macros.ds_add
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Jika ds adalah 2026-04-30, filepath menjadi /data/2026-04-29/input.csv
Pengantar Apache Airflow dengan Python

Catatan Jinja

  • Tidak dapat dipakai di semua tempat
  • Lihat dokumentasi untuk atribut yang templated
  • Periksa tampilan kode

Tampilan kode Dag Airflow yang menampilkan sumber Python hanya-baca yang mendefinisikan Dag

Pengantar Apache Airflow dengan Python

Ayo berlatih!

Pengantar Apache Airflow dengan Python

Preparing Video For Download...