Sau*_*uli 7 amazon-redshift airflow
我试图将执行日期作为运行时参数传递给 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
)
Run Code Online (Sandbox Code Playgroud)
然后我尝试在 sql 查询中使用此参数来接受 dag 传递的值
select
{{ crunch_date }} as test1,
Run Code Online (Sandbox Code Playgroud)
dag 正确发送参数,但是查询只是采用空值而不是传递的执行日期。有没有办法让 postgresql with redshift 接受这个参数的正确值?
您必须更新您的 sql 查询,如下所示:
select
{{ ds }} as test1,
Run Code Online (Sandbox Code Playgroud)
您将无法在另一个模板字段中使用一个模板字段。如果你想在任务中传递参数并在 Jinja 模板中使用它,请使用params
参数。
更新:
但请注意,这params
不是模板化字段。如果您对其进行模板化,它将不会呈现,因为嵌套模板将不起作用。
task = MyPostgresOperator(
task_id='test_date',
postgres_conn_id='redshift',
sql="test_file.sql",
params={'textstring':'abc'},
dag=dag
)
Run Code Online (Sandbox Code Playgroud)
哪里test_file.sql
:
select
{{ params.textstring }} as test1,
Run Code Online (Sandbox Code Playgroud)
检查https://medium.com/datareply/airflow-lesser-known-tips-tricks-and-best-practises-cf4d4a90f8f中的第四点以了解有关params
.
归档时间: |
|
查看次数: |
10242 次 |
最近记录: |