Я использую много операторов Postgres внутри моей Airflow DAG (собирая его с помощью цикла for), и я хотел узнать, можно ли передать шаблон JINJA в параметры моему оператору, например:
params = {'max_field': '{{ ti.xcom_pull(task_ids="get_max_field_' + table + '", key="max_field") }}'}
так что в файле .sql мне нужен только запрос, который выглядит как
SELECT .... FROM .... WHERE ... > '{{ params.max_field }}'
Моя проблема в том, что у меня сейчас так много запросов, что при непосредственном выполнении
SELECT .... FROM .... WHERE ... > '{{ ti.xcom_pull(task_ids="get_max_field_table1'", key="max_field") }}'
много рисков ошибок (например, запись table2 вместо table1, например, когда люди копируют вставки).
Я попытался поместить params в template_fields = ('sql', 'parameters', 'params'), но это не помоглоне работает, он отображает мой запрос с '{{ti.xcom_pull (task_ids = "get_max_field_table1'", key = "max_field")}} "вместо значения.
Я также пытался использовать параметры вместоparams, а затем выполните:
SELECT .... FROM .... WHERE ... > '%(max_field)s'
но тогда в моих запросах возникают проблемы, если в запросе есть%, например:
SELECT .... FROM .... WHERE ... > '%(max_field)s' and text like '%hello%'