gpt4 book ai didi

python - Airflow :将 {{ ds }} 作为参数传递给 PostgresOperator

转载 作者:太空狗 更新时间:2023-10-29 17:56:08 25 4
gpt4 key购买 nike

我想使用执行日期作为我的 sql 文件的参数:

我试过了

dt = '{{ ds }}'

s3_to_redshift = PostgresOperator(
task_id='s3_to_redshift',
postgres_conn_id='redshift',
sql='s3_to_redshift.sql',
params={'file': dt},
dag=dag
)

但它不起作用。

最佳答案

dt = '{{ ds }}'

不起作用,因为 Jinja( Airflow 中使用的模板引擎)不处理整个 Dag 定义文件。

对于每个 Operator 都有 Jinja 将处理的字段,它们是运算符本身定义的一部分。

在这种情况下,如果您扩展 PostgresOperator<,您可以使 params 字段(实际上称为 parameters,确保更改它)模板化 像这样:

class MyPostgresOperator(PostgresOperator):
template_fields = ('sql','parameters')

现在你应该能够做到:

s3_to_redshift = MyPostgresOperator(
task_id='s3_to_redshift',
postgres_conn_id='redshift',
sql='s3_to_redshift.sql',
parameters={'file': '{{ ds }}'},
dag=dag
)

关于python - Airflow :将 {{ ds }} 作为参数传递给 PostgresOperator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44523567/

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