在Airflow DAG中,可以使用Jinja2模板参数来动态设置任务的参数。如果要为Jinja2模板参数设置默认值,可以使用default
过滤器。
下面是一个示例代码,展示了如何在Airflow DAG中使用Jinja2模板参数的默认值:
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from datetime import datetime
default_args = {
'start_date': datetime(2021, 1, 1)
}
dag = DAG('example_dag', default_args=default_args, schedule_interval='@daily')
# 定义Jinja2模板参数,并设置默认值
template_params = {
'my_param': '{{ params.my_param | default("default_value") }}'
}
task1 = DummyOperator(
task_id='task1',
dag=dag
)
task2 = DummyOperator(
task_id='task2',
dag=dag
)
task1 >> task2
# 设置DAG的模板参数
dag.doc_md = """
This is a sample DAG that demonstrates the usage of Jinja2 template parameter with default value.
It uses the `my_param` parameter with a default value of `default_value`.
"""
# 设置任务的模板参数
task1.params = template_params
task2.params = template_params
在上面的代码中,我们定义了一个template_params
字典,并为my_param
参数设置了默认值。在任务的定义中,我们将template_params
赋值给任务的params
属性,以便在任务中使用Jinja2模板参数。
这样,当没有为my_param
参数提供具体值时,Jinja2模板会使用默认值default_value
。如果在任务定义中为my_param
参数提供了具体值,Jinja2模板会使用该值。
注意:在Airflow的Jinja2模板中,可以使用其他的Jinja2语法,如过滤器、循环等。你可以根据需要自定义模板参数的默认值和使用方式。