Templating met Jinja

Introductie tot Apache Airflow in Python

Mike Metzger

Data Engineer

Wat is een template?

  • Een vast formaat waarmee Airflow automatisch info kan invullen
  • Vaak platte tekst / tekstbestanden
  • Maakt toegang en hergebruik eenvoudiger

 

Illustratie van een template met placeholders voor ingevulde waarden

Introductie tot Apache Airflow in Python

Wat is Jinja?

  • Eenvoudige tekstgebaseerde templatingtaal
  • Gebruikt in veel tools naast Airflow
  • {{ ... }} staat voor een templatesubstitutie
    • Vergelijkbaar met een Python f-string
  • Meer dynamiek, ondersteunt for-loops

Illustratie van een Jinja-template met dubbele accolades voor substituties

Introductie tot Apache Airflow in Python

Airflow Jinja-functies

  • logical_date: Wanneer een Dag-run plaatsvindt
  • ds: De logical_date in YYYY-MM-DD-formaat
  • logical_date.year, logical_date.month, logical_date.day: Onderdelen van de datum
  • params: De runtime-parameters van de Dag-run
  • Berekeningen, loops en meer
    • macros.ds_add: Voor datumcalculaties
Introductie tot Apache Airflow in Python

Voorbeeld met SmtpNotifier

  • Substituties in het onderwerpveld
@dag(dag_id=`sales_etl`,
     on_failure_callback=SmtpNotifier(
         to='[email protected]',
         from_email='[email protected]',

subject='sales_etl on {{ logical_date }} has failed!' ) )
  • Onderwerp: sales_etl op 2026-04-30 mislukt!
Introductie tot Apache Airflow in Python

Voorbeeld met FileSensor

  • Stel het bestandspad dynamisch in
  • Zoek bestanden op de dag vóór ds (logical_date in YYYY-MM-DD)
  • Gebruik macros.ds_add
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Als ds 2026-04-30 is, is het pad /data/2026-04-29/input.csv
Introductie tot Apache Airflow in Python

Jinja-notities

  • Werkt niet overal
  • Bekijk de documentatie voor getemplate attributen
  • Check de codeweergave

Airflow Dag codeweergave met de alleen-lezen Python-bron die de Dag definieert

Introductie tot Apache Airflow in Python

Laten we oefenen!

Introductie tot Apache Airflow in Python

Preparing Video For Download...