Templating mit Jinja

Einführung in Apache Airflow mit Python

Mike Metzger

Data Engineer

Was ist ein Template?

  • Ein definiertes Format, mit dem Airflow Infos automatisch ersetzt
  • Oft Klartext/Textdateien
  • Erleichtert Zugriff und Wiederverwendung

 

Illustration einer Vorlage mit Platzhaltern für Ersetzungen

Einführung in Apache Airflow mit Python

Was ist Jinja?

  • Einfache textbasierte Templating-Sprache
  • In vielen Tools außerhalb von Airflow genutzt
  • {{ ... }} steht für eine Template-Ersetzung
    • Ähnlich wie ein Python-f-String
  • Dynamischer nutzbar, unterstützt z. B. for-Schleifen

Illustration eines Jinja-Templates mit Doppelklammer-Ersetzungen

Einführung in Apache Airflow mit Python

Airflow-Jinja-Funktionen

  • logical_date: Wann ein Dag-Run stattfindet
  • ds: Die logical_date im Format YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day: Datumsbestandteile
  • params: Laufzeit-Parameter des Dag-Runs
  • Berechnungen, Schleifen u. mehr
    • macros.ds_add: Ermöglicht Datumsberechnungen
Einführung in Apache Airflow mit Python

Beispiel mit SmtpNotifier

  • Ersetzungen im Betreff-Feld
@dag(dag_id=`sales_etl`,
     on_failure_callback=SmtpNotifier(
         to='[email protected]',
         from_email='[email protected]',

subject='sales_etl on {{ logical_date }} has failed!' ) )
  • Betreff: sales_etl on 2026-04-30 failed!
Einführung in Apache Airflow mit Python

Beispiel mit FileSensor

  • Dateipfad dynamisch konfigurieren
  • Dateien vom Tag vor ds suchen (logical_date in YYYY-MM-DD)
  • macros.ds_add verwenden
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Wenn ds 2026-04-30 ist, wäre der Pfad /data/2026-04-29/input.csv
Einführung in Apache Airflow mit Python

Jinja-Hinweise

  • Nicht überall nutzbar
  • Doku zu templated Attributen prüfen
  • Code-Ansicht checken

Airflow Dag Code-Ansicht mit schreibgeschütztem Python-Quellcode, der den Dag definiert

Einführung in Apache Airflow mit Python

Lass uns üben!

Einführung in Apache Airflow mit Python

Preparing Video For Download...