我正在阅读this question,试图实现对其他ExternalTaskSensor(
task_id='wait_for_the_first_task_to_be_completed',
external_dag_id='a',
external_task_id='first_task',
dag=dag) >> \
任务的依赖。在此示例中,依赖关系写为:
2*number of dependencies
在我的数据仓库中,一张表可能取决于数百个任务。使用这种格式,它将生成Azkaban
行代码。这真的是不能接受的,还有更好的选择吗?
例如,在dependencies = dag1.task1, dag2.task4, dag2.task5, DAG3.task2, etc...
中,我可以这样编写多个依赖项:
['roll_off_m4**', 'ov_offer_desc_m4', 'curr_ov_tier_desc2_m4', 'income', 'age', 'vid_offer_up_flag_m3', 'roll_off_m2', 'ov_offer_group_v2_desc_m4', 'oolpromo_rng_m2*', 'rsdvr_orig_m2', 'vidpromo_rng_m2*', 'ovpromo_rng_m2*']
感谢您的帮助。
答案 0 :(得分:0)
您可以在循环中创建传感器并在其中设置依赖项。我认为它更干净,但是随着依赖性数量的增加,我不确定这是否满足您对代码量的要求。
示例:
dependencies = [('dag1', 'task1'), ('dag2', 'task4'), ('dag2', 'task5'), ('dag3', 'task2')]
other_task = PythonOperator(...)
for dag_id, task_id in dependencies:
sensor = ExternalTaskSensor(
task_id='wait_for_{0}.{1}'.format(dag_id, task_id),
external_dag_id=dag_id,
external_task_id=task_id,
dag=dag)
sensor >> other_task