gpt4 book ai didi

python - Airflow - params 内的 Jinja 模板(postgresoperator)

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:55 25 4
gpt4 key购买 nike

我在 Airflow DAG 中使用了许多 Postgres 运算符(使用 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)。

我尝试将参数放入 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%'

最佳答案

params 不支持 Jinja 模板。

关于python - Airflow - params 内的 Jinja 模板(postgresoperator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53729515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com