Airflow 如何在动态DAG创建中动态传递任务id名称
下面是每个表的动态dag创建。我需要传递load_表的表名,以便任务可以在DAG edw_表A和load_表B中被视为load_表A 在DAG edw_表中Airflow 如何在动态DAG创建中动态传递任务id名称,airflow,airflow-operator,Airflow,Airflow Operator,下面是每个表的动态dag创建。我需要传递load_表的表名,以便任务可以在DAG edw_表A和load_表B中被视为load_表A 在DAG edw_表中 首先,因为您已经为不同的表生成了不同的DAG,所以也不需要将表名添加到任务id中 当然,如果您想这样做,可以通过在get_db_dag中添加一个table_name参数来取消简单的python字符串连接。。作用 然后您可以按如下方式调用上述函数 edw_table_A = get_db_dag( table_name='A'
首先,因为您已经为不同的表生成了不同的DAG,所以也不需要将表名添加到任务id中 当然,如果您想这样做,可以通过在get_db_dag中添加一个table_name参数来取消简单的python字符串连接。。作用 然后您可以按如下方式调用上述函数
edw_table_A = get_db_dag(
table_name='A',
start_date=datetime.datetime(2020, 5, 21),
schedule_interval='0 5 * * *',
max_taskrun=3, # Minutes
max_dagrun=1, # Hours
)
谢谢,我们可以在load\u table=SnowflakeOperator…的load\u表中使用相同的Python字符串插值吗。。。。
def get_db_dag(
*, # what is this?
table_name, # replace dag_id param with just table_name param
start_date,
schedule_interval,
max_taskrun,
max_dagrun,
proc_nm # remove load_sql param too (it is also redundant)
):
..
dag = DAG(
dag_id=f"edw_table_{table_name}", # python 3+ string-interpolation
schedule_interval=schedule_interval,
..
)
load_table = SnowflakeOperator(
task_id=f"load_table_{table_name}", # python 3+ string-interpolation
sql=f"extract_{table_name}.sql",
snowflake_conn_id=CONN_ID,
..
)
load_table # what is this meant for? (it is redundant)
return dag
edw_table_A = get_db_dag(
table_name='A',
start_date=datetime.datetime(2020, 5, 21),
schedule_interval='0 5 * * *',
max_taskrun=3, # Minutes
max_dagrun=1, # Hours
)