Змінні Airflow

Вступ до Apache Airflow на Python

Mike Metzger

Data Engineer

Що таке змінні?

  • Корисні для конфігураційних значень
  • Шляхи до файлів, API endpoints, середовища тощо
  • Можна читати з задач, задавати кодом, через Airflow UI або з файла
  • Існують поза кодом Dag
Вступ до Apache Airflow на Python

Доступ до змінних в Airflow UI

  • Через меню Admin: Variables

Інтерфейс Airflow із відкритим меню Admin і опцією Variables

Вступ до Apache Airflow на Python

Перегляд змінних в Airflow UI

Сторінка Airflow Variables з порожнім списком без визначених змінних

Вступ до Apache Airflow на Python

Додавання змінної в Airflow

Сторінка Airflow Variables з виділеною кнопкою Add Variable

Вступ до Apache Airflow на Python

Редактор змінної

Форма редактора змінної Airflow з полями key, value і description

Вступ до Apache Airflow на Python

Змінні в UI

Сторінка Airflow Variables з однією визначеною змінною в списку

Вступ до Apache Airflow на Python

Читання змінної в Python

  • Використовує бібліотеку airflow.sdk.Variable
  • Читання через Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • У цьому разі my_region дорівнює us-eastern
  • Вкажіть запасний варіант, якщо змінної немає
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Оскільки current_environment не визначено, env має значення None
Вступ до Apache Airflow на Python

Доступ до змінних у шаблонах Jinja

  • Доступно через {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • У нашому випадку FileSensor шукатиме файл /data/us-eastern/input.csv
Вступ до Apache Airflow на Python

Доступ до змінних через CLI

  • Змінні можна читати, оновлювати, видаляти або перелічувати через командний рядок
  • Читати — airflow variables get <variable_name>
  • Записати — airflow variables set <variable_name> <value>
  • Видалити — airflow variables delete <variable_name>
  • Список — airflow variables list <variable_name>
Вступ до Apache Airflow на Python

JSON-змінні

  • Значення змінних можуть бути рядками JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Повертає словник Python
  • У Jinja
    • {{ var.json.variable_name }}
Вступ до Apache Airflow на Python

Встановлення змінних

  • Також можна встановлювати змінні
  • За допомогою Variable.set("variable_name", variable_value)
  • Можна зберігати JSON через опцію serialize_json=True
  • Використовуйте обережно: це може неочікувано вплинути на інші Dags, що звертаються до змінних
Вступ до Apache Airflow на Python

Давайте потренуємось!

Вступ до Apache Airflow на Python

Preparing Video For Download...