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

如何在dbt中获取模型的所有依赖对象列表?

在dbt中获取模型依赖列表的方法

完全可以实现,以下是几种实用方法:

1. 用dbt内置命令快速获取

dbt的dbt ls命令支持筛选依赖关系,能直接输出所有上游模型(包括staging表和中间模型):

  • 获取所有间接依赖(完整 lineage):假设你的目标模型名为my_target_model,执行以下命令,会排除模型本身,输出所有上游依赖:
dbt ls --resource-type model --select my_target_model+ --exclude my_target_model
  • 仅获取直接依赖:如果只需要当前模型里直接用ref引用的对象,用:
dbt ls --resource-type model --select ^my_target_model

针对你提供的示例模型,执行后会输出:

intr_src1
vw_src1
vw_src2
vw_src3

2. 解析代码中的ref引用(自定义场景)

如果只需要提取当前模型文件里的直接ref引用,可以用正则匹配:
匹配规则为{{ ref('([^']+)') }},提取单引号内的内容。这种方法适合快速提取当前文件的引用,但无法获取间接依赖(比如vw_src1内部引用的其他模型)。

3. 解析dbt的manifest文件(进阶需求)

如果需要程序化处理依赖关系,可以用dbt生成的manifest.json文件:

  1. 执行dbt docs generate生成target/manifest.json
  2. 在这个JSON文件里,找到目标模型的depends_on.nodes字段,里面包含所有依赖的节点ID(格式为model.<项目名>.<模型名>),提取其中的模型名即可得到完整依赖列表。

内容的提问来源于stack exchange,提问作者user9635724

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:35:55