Modélisation avec Jinja

Introduction à Apache Airflow en Python

Mike Metzger

Data Engineer

Qu’est-ce qu’un modèle ?

  • Un format défini permettant à Airflow de remplacer automatiquement des infos
  • Souvent du texte brut / des fichiers texte
  • Simplifie l’accès et la réutilisation

 

Illustration d’un modèle avec des espaces réservés pour les valeurs remplacées

Introduction à Apache Airflow en Python

Qu’est-ce que Jinja ?

  • Langage de modélisation simple, basé sur du texte
  • Utilisé dans de nombreux outils au-delà d’Airflow
  • {{ ... }} représente un remplacement de modèle
    • Semblable à une f-string Python
  • Usage plus dynamique, prend en charge les boucles

Illustration d’un modèle Jinja utilisant des remplacements entre doubles accolades

Introduction à Apache Airflow en Python

Fonctions Jinja d’Airflow

  • logical_date : date d’exécution du Dag
  • ds : logical_date au format YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day : composants de la date
  • params : paramètres d’exécution du Dag
  • Calculs, boucles, etc.
    • macros.ds_add : permet des calculs de dates
Introduction à Apache Airflow en Python

Exemple avec SmtpNotifier

  • Remplacements dans l’objet
@dag(dag_id=`sales_etl`,
     on_failure_callback=SmtpNotifier(
         to='[email protected]',
         from_email='[email protected]',

subject='sales_etl on {{ logical_date }} has failed!' ) )
  • Objet : échec de sales_etl le 2026-04-30 !
Introduction à Apache Airflow en Python

Exemple avec FileSensor

  • Configurer dynamiquement le chemin de fichier
  • Chercher les fichiers la veille de ds (logical_date en YYYY-MM-DD)
  • Utiliser macros.ds_add
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Si ds vaut 2026-04-30, le chemin sera /data/2026-04-29/input.csv
Introduction à Apache Airflow en Python

Notes sur Jinja

  • Ne fonctionne pas partout
  • Consultez la doc pour les attributs modélisés
  • Vérifiez la vue code

Vue du code d'un Dag Airflow montrant la source Python en lecture seule qui définit le Dag

Introduction à Apache Airflow en Python

Passons à la pratique !

Introduction à Apache Airflow en Python

Preparing Video For Download...