Airflow Variables

Úvod do Apache Airflow v Pythonu

Mike Metzger

Data Engineer

Co jsou proměnné?

  • Vhodné pro konfigurační hodnoty
  • Cesty k souborům, API endpointy, prostředí atd.
  • Lze dotazovat z úloh, nastavit kódem, přes Airflow UI nebo ze souboru
  • Existují mimo kód DAG
Úvod do Apache Airflow v Pythonu

Přístup k proměnným v Airflow UI

  • Přes nabídku Admin: Variables

Airflow UI s otevřenou nabídkou Admin zobrazující možnost Variables

Úvod do Apache Airflow v Pythonu

Zobrazení proměnných v Airflow UI

Stránka Airflow Variables s prázdným seznamem bez definovaných proměnných

Úvod do Apache Airflow v Pythonu

Přidání proměnné v Airflow

Stránka Airflow Variables se zvýrazněným tlačítkem Přidat proměnnou

Úvod do Apache Airflow v Pythonu

Editor proměnných

Formulář editoru proměnné Airflow s poli pro klíč, hodnotu a popis

Úvod do Apache Airflow v Pythonu

Proměnné v uživatelském rozhraní

Stránka Airflow Variables zobrazující jednu definovanou proměnnou v seznamu

Úvod do Apache Airflow v Pythonu

Čtení proměnné v Pythonu

  • Používá knihovnu airflow.sdk.Variable
  • Čtení pomocí Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • V tomto případě by my_region bylo us-eastern
  • Zadejte záložní hodnotu, pokud proměnná neexistuje
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Protože jsme current_environment nedefinovali, env je None
Úvod do Apache Airflow v Pythonu

Přístup k proměnným v Jinja šablonách

  • Přístup přes {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • V našem případě by FileSensor hledal soubor /data/us-eastern/input.csv
Úvod do Apache Airflow v Pythonu

Přístup k proměnným přes CLI

  • Proměnné lze číst, aktualizovat, mazat nebo vypisovat přes příkazový řádek
  • Čtení – airflow variables get <variable_name>
  • Zápis – airflow variables set <variable_name> <value>
  • Smazání – airflow variables delete <variable_name>
  • Výpis – airflow variables list <variable_name>
Úvod do Apache Airflow v Pythonu

JSON proměnné

  • Hodnoty proměnných mohou být JSON řetězce
    • Variable.get("variable_name", deserialize_json=True)
    • Vrátí slovník Pythonu
  • Pomocí Jinja
    • {{ var.json.variable_name }}
Úvod do Apache Airflow v Pythonu

Nastavení proměnných

  • Proměnné lze také nastavovat
  • Pomocí Variable.set("variable_name", variable_value)
  • Podporuje i JSON s volbou serialize_json=True
  • Používejte střídmě – může to neočekávaně ovlivnit jiné DAG přistupující k proměnným
Úvod do Apache Airflow v Pythonu

Lass uns üben!

Úvod do Apache Airflow v Pythonu

Preparing Video For Download...