Zmienne Airflow

Wprowadzenie do Apache Airflow w Pythonie

Mike Metzger

Data Engineer

Czym są zmienne?

  • Przydatne do przechowywania wartości konfiguracyjnych
  • Ścieżki plików, endpointy API, środowiska itp.
  • Dostępne z poziomu zadań, kodu, interfejsu Airflow lub pliku
  • Istnieją poza kodem DAG
Wprowadzenie do Apache Airflow w Pythonie

Dostęp do zmiennych w interfejsie Airflow

  • Przez menu Admin: Variables

Interfejs Airflow z otwartym menu Admin i widoczną opcją Variables

Wprowadzenie do Apache Airflow w Pythonie

Przeglądanie zmiennych w interfejsie Airflow

Strona zmiennych Airflow z pustą listą – brak zdefiniowanych zmiennych

Wprowadzenie do Apache Airflow w Pythonie

Dodawanie zmiennej w Airflow

Strona zmiennych Airflow z wyróżnionym przyciskiem dodawania zmiennej

Wprowadzenie do Apache Airflow w Pythonie

Edytor zmiennych

Formularz edytora zmiennej Airflow z polami klucza, wartości i opisu

Wprowadzenie do Apache Airflow w Pythonie

Zmienne widoczne w interfejsie

Strona zmiennych Airflow z jedną zdefiniowaną zmienną na liście

Wprowadzenie do Apache Airflow w Pythonie

Odczyt zmiennej w Pythonie

  • Używa biblioteki airflow.sdk.Variable
  • Odczyt przez Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • W tym przypadku my_region będzie równe us-eastern
  • Można podać wartość domyślną, jeśli zmienna nie istnieje
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Ponieważ current_environment nie jest zdefiniowana, env ma wartość None
Wprowadzenie do Apache Airflow w Pythonie

Dostęp do zmiennych w szablonach Jinja

  • Dostępna przez {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • W tym przypadku FileSensor szuka pliku /data/us-eastern/input.csv
Wprowadzenie do Apache Airflow w Pythonie

Dostęp do zmiennych przez CLI

  • Zmienne można odczytywać, aktualizować, usuwać i listować przez CLI
  • Odczyt – airflow variables get <variable_name>
  • Zapis – airflow variables set <variable_name> <value>
  • Usuwanie – airflow variables delete <variable_name>
  • Lista – airflow variables list <variable_name>
Wprowadzenie do Apache Airflow w Pythonie

Zmienne JSON

  • Wartości zmiennych mogą być ciągami JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Zwraca słownik Pythona
  • Użycie Jinja
    • {{ var.json.variable_name }}
Wprowadzenie do Apache Airflow w Pythonie

Ustawianie zmiennych

  • Możliwe jest również ustawianie zmiennych
  • Użycie Variable.set("variable_name", variable_value)
  • Obsługuje również JSON przy użyciu opcji serialize_json=True
  • Należy stosować oszczędnie – może to wpłynąć na inne DAGi w nieprzewidziany sposób
Wprowadzenie do Apache Airflow w Pythonie

Czas na ćwiczenia!

Wprowadzenie do Apache Airflow w Pythonie

Preparing Video For Download...