Modèles avec Jinja

Introduction à Apache Airflow en Python

Mike Metzger

Data Engineer

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

  • Format défini permettant à Airflow de remplacer l'information automatiquement
  • Souvent du texte simple / des fichiers texte
  • Facile à accéder et à réutiliser

 

Illustration d'un modèle avec des espaces réservés pour les valeurs de substitution

Introduction à Apache Airflow en Python

Qu'est-ce que Jinja ?

  • Langage de modèles simple basé sur du texte
  • Utilisé dans de nombreux outils, pas seulement Airflow
  • {{ ... }} représente une substitution de modèle
    • Semblable à une f-string Python
  • Usage plus dynamique, prend en charge les boucles for

Illustration d'un modèle Jinja utilisant des substitutions entre doubles accolades

Introduction à Apache Airflow en Python

Fonctions Jinja d'Airflow

  • logical_date : moment d'exécution d'un Dag
  • ds : logical_date au format YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day : accéder aux composantes 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

  • Substitutions dans le champ d'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 le jour précédent ds (logical_date au format 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 s'utilise pas partout
  • Consultez la documentation pour les attributs templated
  • Vérifiez l'affichage du code

Vue du code d'un Dag Airflow affichant 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...