我试图将执行日期作为运行时参数传递给postgres运算符
class MyPostgresOperator(PostgresOperator):
template_fields = ('sql','parameters')
task = MyPostgresOperator(
task_id='test_date',
postgres_conn_id='redshift',
sql="test_file.sql",
parameters={'crunch_date':'{{ ds }}'},
dag=dag
)
然后我尝试在sql查询中使用此参数来接受dag传递的值
select
{{ crunch_date }} as test1,
dag正确发送了参数,但是查询仅使用空值,而不是传递的执行日期。有没有办法让带有redshift的postgresql对此参数接受正确的值?
您将必须如下更新您的sql查询:
select
{{ ds }} as test1,
您将无法在其他模板字段中使用一个模板字段。如果要在任务中传递参数并在Jinja模板中使用它,请使用params
parameter。
更新:
但是请注意,这params
不是模板字段。而且,如果您对其进行模板化,则它将无法渲染,因为嵌套的模板将无法工作。
task = MyPostgresOperator(
task_id='test_date',
postgres_conn_id='redshift',
sql="test_file.sql",
params={'textstring':'abc'},
dag=dag
)
在哪里test_file.sql
:
select
{{ params.textstring }} as test1,
查看https://medium.com/datareply/airflow-lesser-known-tips-tricks-and-best-practises-cf4d4a90f8f中的第4点,以了解更多有关的信息params
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句