Variables Airflow

Introduction à Apache Airflow en Python

Mike Metzger

Data Engineer

Qu’est-ce qu’une variable ?

  • Utile pour des valeurs de configuration
  • Chemins de fichiers, endpoints d’API, environnements, etc.
  • Interrogeables depuis des tâches, définissables via code, UI Airflow ou fichier
  • Existent en dehors du code des DAGs
Introduction à Apache Airflow en Python

Accéder aux variables dans l’UI Airflow

  • Via le menu Admin : Variables

UI Airflow avec le menu Admin ouvert et l’option Variables

Introduction à Apache Airflow en Python

Afficher les variables dans l’UI Airflow

Page Variables d’Airflow avec une liste vide et aucune variable définie

Introduction à Apache Airflow en Python

Ajouter une variable dans Airflow

Page Variables d’Airflow avec le bouton Ajouter une variable mis en évidence

Introduction à Apache Airflow en Python

Éditeur de variables

Formulaire d’édition de variable Airflow avec les champs clé, valeur et description

Introduction à Apache Airflow en Python

Variables présentes dans l’UI

Page Variables d’Airflow affichant une variable définie dans la liste

Introduction à Apache Airflow en Python

Lire une variable en Python

  • Utilise la bibliothèque airflow.sdk.Variable
  • Lecture via Variable.get("variable_name")
    # Récupérer une chaîne simple
    my_region = Variable.get("region")
    
  • Ici, my_region vaudrait us-eastern
  • Fournir une valeur par défaut si la variable n’existe pas
    # Valeur par défaut si la variable n’existe pas
    env = Variable.get("current_environment", default=None)
    
  • Comme current_environment n’est pas définie, env vaut None
Introduction à Apache Airflow en Python

Accéder aux variables dans les modèles Jinja

  • Accessible via {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • Ici, le FileSensor cherchera le fichier /data/us-eastern/input.csv
Introduction à Apache Airflow en Python

Accéder aux variables via le CLI

  • Variables lisibles, modifiables, supprimables ou listables en ligne de commande
  • Lire - airflow variables get <variable_name>
  • Écrire - airflow variables set <variable_name> <value>
  • Supprimer - airflow variables delete <variable_name>
  • Lister - airflow variables list <variable_name>
Introduction à Apache Airflow en Python

Variables JSON

  • Les valeurs peuvent être des chaînes JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Retourne un dictionnaire Python
  • Avec Jinja
    • {{ var.json.variable_name }}
Introduction à Apache Airflow en Python

Définir des variables

  • Possible aussi de définir des variables
  • Avec Variable.set("variable_name", variable_value)
  • JSON possible via l’option serialize_json=True
  • À utiliser avec parcimonie : peut impacter d’autres DAGs de façon imprévue
Introduction à Apache Airflow en Python

Passons à la pratique !

Introduction à Apache Airflow en Python

Preparing Video For Download...