Airflow-variabelen

Introductie tot Apache Airflow in Python

Mike Metzger

Data Engineer

Wat zijn variabelen?

  • Handig voor configuratiewaarden
  • Bestands­paden, API-eindpunten, omgevingen, enz.
  • Op te vragen vanuit taken, te zetten via code, Airflow UI of via bestand
  • Bestaan buiten de Dag-code
Introductie tot Apache Airflow in Python

Variabelen in de Airflow-UI openen

  • Via het menu Admin: Variables

Airflow-UI met het Admin-menu open en de optie Variables

Introductie tot Apache Airflow in Python

Variabelen bekijken in de Airflow-UI

Pagina Airflow-variabelen met een lege lijst en geen gedefinieerde variabelen

Introductie tot Apache Airflow in Python

Een variabele toevoegen in Airflow

Pagina Airflow-variabelen met de knop Add Variable gemarkeerd

Introductie tot Apache Airflow in Python

Variabele-editor

Formulier voor variabele bewerken in Airflow met velden key, value en description

Introductie tot Apache Airflow in Python

Variabelen zichtbaar in de UI

Pagina Airflow-variabelen met één gedefinieerde variabele in de lijst

Introductie tot Apache Airflow in Python

Een variabele lezen in Python

  • Gebruikt de airflow.sdk.Variable-bibliotheek
  • Lezen via Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • In dit geval is my_region us-eastern
  • Geef een fallback als de variabele niet bestaat
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Omdat we geen current_environment hebben gezet, is env None
Introductie tot Apache Airflow in Python

Variabelen gebruiken in Jinja-templates

  • Toegankelijk via {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • Hier zoekt de FileSensor naar het bestand /data/us-eastern/input.csv
Introductie tot Apache Airflow in Python

Variabelen via de CLI benaderen

  • Variabelen kun je lezen, updaten, verwijderen of lijsten via de command line
  • Lezen - airflow variables get <variable_name>
  • Schrijven - airflow variables set <variable_name> <value>
  • Verwijderen - airflow variables delete <variable_name>
  • Lijst - airflow variables list <variable_name>
Introductie tot Apache Airflow in Python

JSON-variabelen

  • Variabelewaarden kunnen JSON-strings zijn
    • Variable.get("variable_name", deserialize_json=True)
    • Geeft een Python-dictionary terug
  • Met Jinja
    • {{ var.json.variable_name }}
Introductie tot Apache Airflow in Python

Variabelen instellen

  • Variabelen kun je ook zetten
  • Met Variable.set("variable_name", variable_value)
  • Kan ook JSON met de optie serialize_json=True
  • Gebruik spaarzaam: dit kan andere Dags onbedoeld beïnvloeden
Introductie tot Apache Airflow in Python

Laten we oefenen!

Introductie tot Apache Airflow in Python

Preparing Video For Download...