Airflow для менеджеров

В Ariflow 3.1 появилась группа hitl-операторов, которая позволяет что-то вводить пользаку во время работы дага

HITL = Human-in-the-loop

🫠 Что делает пример на картинках?

Мы задаем даты, выбираем сервисы из списка, вводим почту и получаем отчет. Операторы по сути помогают менеджерам не дергать DA/DE своими адхоками, а пойти самому накликать и выгрузить то, что нужно

🤓 А как это происходит?

В базовых примерах после разворачивания airflow появится даг example_hitl_operator. Там есть несколько операторов из пакета airflow.providers.standard.operators.hitl:

🤩HITLOperator — выбрать одну или несколько опций из списка 🤩HITLEntryOperator — ввести любой текст 🤩HITLBranchOperator — выбрать следующую таску 🤩ApprovalOperator — одобрить или отклонить

В коде выглядит это вот так:

wait_for_multiple_options = HITLOperator( task_id="wait_for_multiple_options", subject="Please choose option to proceed: ", options=["option 1", "option 2", "option 3"], multiple=True, defaults=["option 1"], )

Когда заходите в UI, после запуска дага появляется доп вкладка Required Actions (1), где и нужно прожать опцию. Это все потом отправляется в xcom:

{ "params_input": {}, "responded_at": "datetime.datetime@version=2(tz=(UTC,pendulum.tz.timezone.Timezone,1,True),timestamp=1778505898.269782)", "chosen_options": [ "option 2", "option 3" ], "responded_by_user": { "id": "1", "name": "airflow" } }

Из xcom потом можно достать в других тасках. Сначала обращаетесь по названию таски, а потом работаете, как с обычным словарем:

{{ ti.xcom_pull(task_ids='wait_for_multiple_options')["chosen_options"] }}

{{ ti.xcom_pull(task_ids='wait_for_input')["params_input"]["information"] }}

Use case очень прикольный. Интересно, а вот на практике этим будут пользоваться?

@data_engineerette

Airflow для менеджеров
В Ariflow 3 | Сетка — социальная сеть от hh.ru
Airflow для менеджеров
В Ariflow 3 | Сетка — социальная сеть от hh.ru Airflow для менеджеров
В Ariflow 3 | Сетка — социальная сеть от hh.ru