Airflow-variabler

Introduktion till Apache Airflow i Python

Mike Metzger

Data Engineer

Vad är variabler?

  • Användbara för konfigurationsvärden
  • Filsökvägar, API-endpoints, miljöer m.m.
  • Kan läsas från tasks, sättas via kod, Airflow UI eller fil
  • Existerar utanför DAG-koden
Introduktion till Apache Airflow i Python

Öppna variabler i Airflow UI

  • Via menyn Admin: Variables

Airflow UI med Admin-menyn öppen och alternativet Variables synligt

Introduktion till Apache Airflow i Python

Visa variabler i Airflow UI

Airflow Variables-sida med en tom lista och inga definierade variabler

Introduktion till Apache Airflow i Python

Lägga till en variabel i Airflow

Airflow Variables-sida med knappen Add Variable markerad

Introduktion till Apache Airflow i Python

Variabelredigeraren

Airflows variabelredigerare med fält för nyckel, värde och beskrivning

Introduktion till Apache Airflow i Python

Variabler visas i UI:t

Airflow Variables-sida som visar en definierad variabel i listan

Introduktion till Apache Airflow i Python

Läsa en variabel i Python

  • Använder biblioteket airflow.sdk.Variable
  • Läses via Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • I det här fallet skulle my_region vara us-eastern
  • Ange ett reservvärde om variabeln inte finns
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Eftersom current_environment inte är definierad blir env None
Introduktion till Apache Airflow i Python

Använda variabler i Jinja-mallar

  • Tillgänglig via {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • I vårt fall letar FileSensor efter filen /data/us-eastern/input.csv
Introduktion till Apache Airflow i Python

Använda variabler via CLI

  • Variabler kan läsas, uppdateras, tas bort eller listas via kommandoraden
  • Läsa – airflow variables get <variable_name>
  • Skriva – airflow variables set <variable_name> <value>
  • Ta bort – airflow variables delete <variable_name>
  • Lista – airflow variables list <variable_name>
Introduktion till Apache Airflow i Python

JSON-variabler

  • Variabelvärden kan vara JSON-strängar
    • Variable.get("variable_name", deserialize_json=True)
    • Returnerar en Python-ordbok
  • Med Jinja
    • {{ var.json.variable_name }}
Introduktion till Apache Airflow i Python

Sätta variabler

  • Det går även att sätta variabler
  • Med Variable.set("variable_name", variable_value)
  • Stöder även JSON via alternativet serialize_json=True
  • Använd sparsamt – det kan påverka andra DAG:ar som läser variablerna på oväntade sätt
Introduktion till Apache Airflow i Python

Nu kör vi en övning!

Introduktion till Apache Airflow i Python

Preparing Video For Download...