Șablonare cu Jinja

Introducere în Apache Airflow în Python

Mike Metzger

Data Engineer

Ce este un șablon?

  • Format predefinit care permite Airflow să substituie informații automat
  • De obicei fișiere text simple
  • Simplifică accesul și reutilizarea

 

Ilustrație a unui șablon cu substituenți pentru valori

Introducere în Apache Airflow în Python

Ce este Jinja?

  • Limbaj simplu de șablonare bazat pe text
  • Utilizat în multe instrumente în afara Airflow
  • {{ ... }} reprezintă o substituție de șablon
    • Similar cu un f-string Python
  • Utilizare mai dinamică, suportă bucle for

Ilustrație a unui șablon Jinja folosind substituții cu acolade duble

Introducere în Apache Airflow în Python

Funcții Jinja în Airflow

  • logical_date: Momentul în care are loc o rulare a DAG-ului
  • ds: logical_date în format YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day: Accesați componentele datei
  • params: Parametrii de rulare ai DAG-ului
  • Calcule, bucle și altele
    • macros.ds_add: Permite calcule cu date
Introducere în Apache Airflow în Python

Exemplu cu SmtpNotifier

  • Substituții în câmpul subiect
@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!
Introducere în Apache Airflow în Python

Exemplu cu FileSensor

  • Configurați calea fișierului în mod dinamic
  • Căutați fișiere din ziua anterioară valorii ds (logical_date în YYYY-MM-DD)
  • Utilizați macros.ds_add
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Dacă ds este 2026-04-30, calea fișierului va fi /data/2026-04-29/input.csv
Introducere în Apache Airflow în Python

Note despre Jinja

  • Nu poate fi utilizat oriunde
  • Consultați documentația pentru atributele șablonate
  • Verificați vizualizarea codului

Vizualizarea codului DAG în Airflow, afișând sursa Python doar pentru citire care definește DAG-ul

Introducere în Apache Airflow în Python

Să exersăm!

Introducere în Apache Airflow în Python

Preparing Video For Download...