如何从Airflow(v2)元数据数据库获取DAG任务依赖关系?
Airflow v2元数据库获取任务依赖关系方案
可以直接从Airflow元数据库中获取任务的上下游依赖关系,核心是利用task_dependencies表,再关联task_instance就能追踪同一次DAG运行的任务执行谱系。
核心表说明
task_dependencies:专门存储任务间的依赖关系,关键字段包括:dag_id:所属DAG的IDtask_id:下游任务IDupstream_task_id:上游任务IDdependency_type:依赖类型(如SCHEDULE表示调度依赖,DATA表示数据依赖)
以你提到的a > b > c结构为例,该表会生成两条记录:
dag_id=你的DAGID,task_id='b',upstream_task_id='a'dag_id=你的DAGID,task_id='c',upstream_task_id='b'
关联TaskInstance查询执行谱系
通过关联task_dependencies和task_instance表,可获取同一次DAG运行中任务的依赖关系与执行状态。以下是SQL示例:
SELECT td.dag_id, ti_up.task_id AS 上游任务ID, ti_up.state AS 上游任务状态, ti_up.start_date AS 上游启动时间, ti_down.task_id AS 下游任务ID, ti_down.state AS 下游任务状态, ti_down.start_date AS 下游启动时间 FROM task_dependencies td JOIN task_instance ti_down ON td.dag_id = ti_down.dag_id AND td.task_id = ti_down.task_id JOIN task_instance ti_up ON td.dag_id = ti_up.dag_id AND td.upstream_task_id = ti_up.task_id WHERE ti_down.dag_run_id = 'your_dag_run_id' -- 替换为目标DAG运行ID ORDER BY ti_up.start_date;
特殊依赖处理
- 分支任务:若依赖涉及分支逻辑,可结合
task_instance的map_index字段区分分支实例 - 跨DAG依赖:需关联
dag_dependencies表,同时结合两个DAG的task_instance数据 - XCom依赖:若任务依赖基于XCom传递,可关联
xcom表补充数据
内容的提问来源于stack exchange,提问作者Ben L
相关产品推荐
相关产品推荐

