Templating con Jinja

Introduzione ad Apache Airflow in Python

Mike Metzger

Data Engineer

Cos'è un template?

  • Un formato definito che consente ad Airflow di sostituire info in automatico
  • Spesso testo semplice/file di testo
  • Semplifica accesso e riuso

 

Illustrazione di un template con segnaposto per i valori sostituiti

Introduzione ad Apache Airflow in Python

Cos'è Jinja?

  • Linguaggio di templating semplice, basato su testo
  • Usato in molti strumenti oltre Airflow
  • {{ ... }} indica una sostituzione del template
    • Simile a una f-string in Python
  • Uso più dinamico, supporta i for loop

Illustrazione di un template Jinja con sostituzioni tra doppie parentesi graffe

Introduzione ad Apache Airflow in Python

Funzioni Jinja in Airflow

  • logical_date: quando avviene un run del DAG
  • ds: la logical_date in formato YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day: accedi ai componenti della data
  • params: i parametri runtime del run del DAG
  • Calcoli, loop e altro
    • macros.ds_add: consente calcoli sulle date
Introduzione ad Apache Airflow in Python

Esempio con SmtpNotifier

  • Sostituzioni nel campo oggetto
@dag(dag_id=`sales_etl`,
     on_failure_callback=SmtpNotifier(
         to='[email protected]',
         from_email='[email protected]',

subject='sales_etl on {{ logical_date }} has failed!' ) )
  • Oggetto: sales_etl il 2026-04-30 non è riuscito!
Introduzione ad Apache Airflow in Python

Esempio con FileSensor

  • Configura dinamicamente il percorso file
  • Cerca file il giorno prima di ds (logical_date in YYYY-MM-DD )
  • Usa macros.ds_add
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Se ds è 2026-04-30, il percorso sarà /data/2026-04-29/input.csv
Introduzione ad Apache Airflow in Python

Note su Jinja

  • Non si può usare ovunque
  • Consulta la documentazione degli attributi templated
  • Controlla la vista codice

Vista codice del DAG in Airflow che mostra il sorgente Python di sola lettura che definisce il DAG

Introduzione ad Apache Airflow in Python

Passons à la pratique !

Introduzione ad Apache Airflow in Python

Preparing Video For Download...