You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Airflow(v2)元数据数据库获取DAG任务依赖关系?

Airflow v2元数据库获取任务依赖关系方案

可以直接从Airflow元数据库中获取任务的上下游依赖关系,核心是利用task_dependencies表,再关联task_instance就能追踪同一次DAG运行的任务执行谱系。

核心表说明

  • task_dependencies:专门存储任务间的依赖关系,关键字段包括:
    • dag_id:所属DAG的ID
    • task_id:下游任务ID
    • upstream_task_id:上游任务ID
    • dependency_type:依赖类型(如SCHEDULE表示调度依赖,DATA表示数据依赖)

以你提到的a > b > c结构为例,该表会生成两条记录:

  1. dag_id=你的DAGID,task_id='b',upstream_task_id='a'
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:57:34