如何解决添加了气流模板字段,但是像{{ds}}这样的变量不起作用
我想将气流变量传递给这样的SQL查询模板文件(在sql / test.sql文件中):
select 'test','{{ params.test_ds }}','{{ test_dt }}' from test_table;
我创建了一个继承自PostgresOperator的Operator:
class EtlOperator(PostgresOperator):
template_fields = ('sql','test_dt','params')
template_ext = PostgresOperator.template_ext
@apply_defaults
def __init__(self,test_dt,params,*args,**kwargs):
super(EtlRunIdOperator,self).__init__(*args,**kwargs)
self.test_dt = test_dt
self.params = params
def execute(self,context):
super(EtlRunIdOperator,self).execute(context)
我创建了此任务:
test_task00 = EtlOperator(
task_id=f'test_task00',postgres_conn_id='redshift',sql='sql/test.sql',params={
'test_ds': '{{ ds }}'
},database='default',test_dt='{{ execution_date }}',provide_context=True,# tried without it too
dag=dag
)
但是,无论template_fields的参数或test_dt是什么,SQL仍不会解析变量,结果如下:
INFO - Executing: select 'test','{{ ds }}','' from test_table;
我的配置哪里出问题了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。