Переменные Airflow

Введение в Apache Airflow на Python

Mike Metzger

Data Engineer

Что такое переменные?

  • Используются для конфигурационных значений
  • Пути к файлам, API-эндпоинты, среды и т. д.
  • Доступны из задач, устанавливаются через код, UI Airflow или файл
  • Существуют вне кода DAG
Введение в Apache Airflow на Python

Доступ к переменным в UI Airflow

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

UI Airflow с открытым меню Admin и выбранным пунктом Variables

Введение в Apache Airflow на Python

Просмотр переменных в UI Airflow

Страница Variables в Airflow с пустым списком без определённых переменных

Введение в Apache Airflow на Python

Добавление переменной в Airflow

Страница Variables в Airflow с выделенной кнопкой Add Variable

Введение в Apache Airflow на Python

Редактор переменных

Форма редактора переменной Airflow с полями key, value и description

Введение в Apache Airflow на Python

Переменные в UI

Страница Variables в Airflow с одной определённой переменной в списке

Введение в 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

  • Переменные можно читать, обновлять, удалять и просматривать через 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
  • Используйте осторожно: это может непредсказуемо повлиять на другие DAG
Введение в Apache Airflow на Python

Давайте потренируемся!

Введение в Apache Airflow на Python

Preparing Video For Download...