Airflow - шаблон Jinja внутри params (постгресоператор) - PullRequest
0 голосов
/ 11 декабря 2018

Я использую много операторов 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%'

1 Ответ

0 голосов
/ 12 декабря 2018

params не поддерживает шаблон Jinja.

...