Airflow 中的模板
Templating in Airflow
伙计们,Airflow 还很陌生。我正在尝试将 start_date
和 end_date
发送到我的 sql 脚本,该脚本将作为我的 DAG 中的任务发送到 运行。我最初的方法是将这些模板化并通过 param
变量将它们发送到 PostgresOperator
。像
PostgresOperator(
task_id='test_edw_job',
sql='sql/my.sql',
params={'start_date': start_date, 'end_date': end_date}
)
其中 start_date
和 end_date
是定义为
的宏
end_date = "{{ macros.my_plugin.end_date(execution_date) }}"
start_of_month = '{{ macros.my_plugin.start_date(execution_date) }}'
在我的 SQL 文件中,我分别以 {{ param.start_date }}
和 {{ params.end_date }}
访问这些变量。
但是一旦我启动我的 DAG 并查看呈现的任务,它就会将它们模板化为 {{ macros.my_plugin.start_date(execution_date) }}
和 {{ macros.my_plugin.end_date(execution_date) }}
,因为我试图在此处对这些宏的实际值进行模板化。我在这里做错了什么吗?任何意见都会受到高度赞赏。
因此,深入了解模板在 Airflow 中的工作原理。只有一次 params
会被它的值替换。在我的例子中 params
即 start_date
和 end_date
本身就是模板,这意味着它们将被相应的宏定义(即 {{ macros.my_plugin.start_date(execution_date) }}
)替换,但不会被那些 macros
即类似于 2019-10-10
。在进行一些试运行时,我发现我实际上不必将 start_date
和 end_date
作为参数传递给 PostgresOperator
。我可以在我的 Sql 文件中模板化 start_date
和 end_date
,作为模板化初始传递的一部分,这些变量将替换为通过 macros
计算的相应值,表示他们。
希望这对将来像我一样刚接触 airflow
模板的人有所帮助。
伙计们,Airflow 还很陌生。我正在尝试将 start_date
和 end_date
发送到我的 sql 脚本,该脚本将作为我的 DAG 中的任务发送到 运行。我最初的方法是将这些模板化并通过 param
变量将它们发送到 PostgresOperator
。像
PostgresOperator(
task_id='test_edw_job',
sql='sql/my.sql',
params={'start_date': start_date, 'end_date': end_date}
)
其中 start_date
和 end_date
是定义为
end_date = "{{ macros.my_plugin.end_date(execution_date) }}"
start_of_month = '{{ macros.my_plugin.start_date(execution_date) }}'
在我的 SQL 文件中,我分别以 {{ param.start_date }}
和 {{ params.end_date }}
访问这些变量。
但是一旦我启动我的 DAG 并查看呈现的任务,它就会将它们模板化为 {{ macros.my_plugin.start_date(execution_date) }}
和 {{ macros.my_plugin.end_date(execution_date) }}
,因为我试图在此处对这些宏的实际值进行模板化。我在这里做错了什么吗?任何意见都会受到高度赞赏。
因此,深入了解模板在 Airflow 中的工作原理。只有一次 params
会被它的值替换。在我的例子中 params
即 start_date
和 end_date
本身就是模板,这意味着它们将被相应的宏定义(即 {{ macros.my_plugin.start_date(execution_date) }}
)替换,但不会被那些 macros
即类似于 2019-10-10
。在进行一些试运行时,我发现我实际上不必将 start_date
和 end_date
作为参数传递给 PostgresOperator
。我可以在我的 Sql 文件中模板化 start_date
和 end_date
,作为模板化初始传递的一部分,这些变量将替换为通过 macros
计算的相应值,表示他们。
希望这对将来像我一样刚接触 airflow
模板的人有所帮助。