到Postgres操作员的气流参数

索拉夫·甘古利

我试图将执行日期作为运行时参数传递给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模板中使用它,请使用paramsparameter。

更新

但是请注意,这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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章