在 Airflow DAG 的构建过程中,有时候需要设置某些参数为可选的,即可以指定该参数,也可以不指定该参数。例如,可以设置 DAG 的默认参数 start_date
和 schedule_interval
为可选参数,允许用户在实例化 DAG 时选择是否指定这些参数。
在 Airflow 中,可以使用 default_args
参数设置 DAG 的默认参数。如果希望将某些参数设置为可选的,可以将这些参数设置为 None
,并在 DAG 实例化时使用 Python 的条件语句判断是否需要指定该参数的值。示例如下:
from datetime import datetime, timedelta
from airflow import DAG
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': None, # 将 start_date 参数设置为可选的
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
}
dag = DAG(
'my_dag',
default_args=default_args,
schedule_interval=None, # 将 schedule_interval 参数设置为可选的
)
# 使用条件语句判断是否需要指定 start_date 参数的值
if dag.default_args['start_date'] is None:
dag.default_args['start_date'] = datetime.now() - timedelta(days=1)
# 使用条件语句判断是否需要指定 schedule_interval 参数的值
if dag.schedule_interval is None:
dag.schedule_interval = timedelta(days=1)
在上述代码中,default_args
参数中将 start_date
和 schedule_interval
参数的默认值设置为 None
,表示这些参数为可选参数。在 DAG 实例化后,使用条件语句判断是否需要指定这些参数的值。如果不需要指定,可以使用默认值或通过某种方式计算出参数的值。如果需要指定,可以在实例化时传入对应的参数值即可。