Variables Airflow

Introduction à Apache Airflow en Python

Mike Metzger

Data Engineer

Qu'est-ce qu'une variable ?

  • Pratiques pour des valeurs de configuration
  • Chemins de fichiers, points de terminaison d'API, environnements, etc.
  • Consultables depuis les tâches, définies par code, l'interface Airflow ou un fichier
  • Existent en dehors du code de Dag
Introduction à Apache Airflow en Python

Accéder aux variables dans l'interface Airflow

  • Via le menu Admin : Variables

Interface Airflow avec le menu Admin ouvert montrant l'option Variables

Introduction à Apache Airflow en Python

Afficher les variables dans l'interface 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 en surbrillance

Introduction à Apache Airflow en Python

Éditeur de variable

Formulaire d'édition de variable Airflow avec les champs key, value et description

Introduction à Apache Airflow en Python

Variables présentes dans l'interface

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")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • Ici, my_region serait us-eastern
  • Fournir une valeur de repli si la variable n'existe pas
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Comme current_environment n'a pas été défini, env vaut None
Introduction à Apache Airflow en Python

Accéder aux variables dans les gabarits Jinja

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

Accéder aux variables via la CLI

  • Les variables peuvent être lues, mises à jour, supprimées ou listées 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 de variable 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

  • On peut aussi définir des variables
  • Avec Variable.set("variable_name", variable_value)
  • Peut aussi sérialiser du JSON avec l'option serialize_json=True
  • À utiliser avec parcimonie, car cela peut affecter d'autres Dags qui accèdent aux variables de façon imprévue
Introduction à Apache Airflow en Python

Passons à la pratique !

Introduction à Apache Airflow en Python

Preparing Video For Download...