Airflow-Variablen

Einführung in Apache Airflow mit Python

Mike Metzger

Data Engineer

Was sind Variablen?

  • Nützlich für Konfigurationswerte
  • Dateipfade, API-Endpunkte, Umgebungen usw.
  • Abfragbar aus Tasks, setzbar per Code, Airflow-UI oder Datei
  • Existieren außerhalb des Dag-Codes
Einführung in Apache Airflow mit Python

Variablen in der Airflow-UI aufrufen

  • Über das Menü Admin: Variables

Airflow-UI mit geöffnetem Admin-Menü und der Option Variables

Einführung in Apache Airflow mit Python

Variablen in der Airflow-UI ansehen

Airflow-Variablen-Seite mit leerer Liste ohne definierte Variablen

Einführung in Apache Airflow mit Python

Variable in Airflow hinzufügen

Airflow-Variablen-Seite mit hervorgehobener Schaltfläche Add Variable

Einführung in Apache Airflow mit Python

Variablen-Editor

Airflow-Variable-Editor mit Feldern für Key, Value und Description

Einführung in Apache Airflow mit Python

Variablen in der UI vorhanden

Airflow-Variablen-Seite mit einer definierten Variable in der Liste

Einführung in Apache Airflow mit Python

Variable in Python lesen

  • Nutzt die Bibliothek airflow.sdk.Variable
  • Lesen mit Variable.get("variable_name")
    # Einen einfachen String-Wert holen
    my_region = Variable.get("region")
    
  • Hier wäre my_region us-eastern
  • Fallback angeben, falls die Variable nicht existiert
    # Fallback, falls die Variable nicht existiert
    env = Variable.get("current_environment", default=None)
    
  • Da wir current_environment nicht definiert haben, ist env None
Einführung in Apache Airflow mit Python

Zugriff in Jinja-Templates

  • Zugriff über {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • In unserem Fall sucht der FileSensor nach /data/us-eastern/input.csv
Einführung in Apache Airflow mit Python

Zugriff über die CLI

  • Variablen können per Kommandozeile gelesen, gesetzt, gelöscht oder gelistet werden
  • Lesen – airflow variables get <variable_name>
  • Setzen – airflow variables set <variable_name> <value>
  • Löschen – airflow variables delete <variable_name>
  • Auflisten – airflow variables list <variable_name>
Einführung in Apache Airflow mit Python

JSON-Variablen

  • Variable-Werte können JSON-Strings sein
    • Variable.get("variable_name", deserialize_json=True)
    • Gibt ein Python-Dict zurück
  • Mit Jinja
    • {{ var.json.variable_name }}
Einführung in Apache Airflow mit Python

Variablen setzen

  • Variablen lassen sich auch setzen
  • Mit Variable.set("variable_name", variable_value)
  • Auch JSON mit serialize_json=True möglich
  • Sparsam nutzen, da dies andere DAGs beim Variablenzugriff unerwartet beeinflussen kann
Einführung in Apache Airflow mit Python

Lass uns üben!

Einführung in Apache Airflow mit Python

Preparing Video For Download...