В airflow можем ли мы установить строки jinja2 в `task_id`?

#jinja2 #airflow

#jinja2 #воздушный поток

Вопрос:

Вопрос:

Могу ли я использовать синтаксис строки jinja2 в task_id string или мы ограничены f-string ?

Пример:

Допустим, я использую BashOperator и внутри я назначил params . Я могу успешно использовать их params в своем bash_command , однако, как только я использую их в task_id строке, я получаю следующую ошибку:

airflow.exceptions.AirflowException: The key (my_task_id_string{{ params.paramname1}}{{ params.paramname2}}) has to be made of alphanumeric characters, dashes, dots and underscores

Вместо этого, чтобы смягчить это, я использую f-строку следующим образом: f"my_task_id_string{paramname1}{paramname2}"

Комментарии:

1. Я никогда не использовал Jinja , но мое лучшее предположение заключается в том, что Jinja for task_id НЕВОЗМОЖНО , поскольку Jinja получает во время выполнения , а не во время планирования (по той же причине, по которой вы не можете определить структуру вашего DAG на основе выходных данных предыдущей, т. Е. восходящей задачи). Это может измениться с AIP-12 , поэтому следите за его <a rel="nofollow noreferrer noopener" href="https://lists.apache.org/thread.html/2575131a6bfd877bf9b43c783bdc65a085ecac705976d3d8a7c73647@» rel=»nofollow noreferrer»> обсуждением

2. Можете ли вы опубликовать свой DAG-код? Если вы пытаетесь использовать макросы airflow внутри вашей базы данных, это не сработает, поскольку, как уже упоминал @y2k-shubham: рендеринг шаблона jinja выполняется во время выполнения, а не во время планирования.

Ответ №1:

Не все параметры в BashOperator шаблонны, то же самое относится ко всем операторам, доступным в Airflow.

Для BashOperator поля, для которых Jinja будет создавать шаблон, являются bash_command и env .

Для получения дополнительной справки вы всегда можете обратиться к любым исходным строкам документа operators, в которых будет указано, является ли поле шаблонным.

Для BashOperator вы можете обратиться сюдаhttps://airflow.apache.org/docs/stable/_modules/airflow/operators/bash_operator.html