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

dbt添加Git包触发Schema无效错误,如何解决?

解决dbt包引用的Validator Schema错误问题

环境信息

  • dbt版本:1.5.11
  • 终端:iTerm
  • 包类型:Git(托管于GitHub)
  • 使用Fivetran官方包的fork版本

配置情况

在项目顶层packages.yml中添加的fork包配置如下:

packages:

...

  - git: "https://github.com/thleo/dbt_mixpanel__no_quotes.git"
    revision: c0b9cc2eec45ccc7b909132f360e76278ae00c25
    name: "mixpanel__no_quotes"

报错信息

运行该包关联的模型时,触发以下验证错误:

Validator Error:
  {'git': 'https://github.com/thleo/dbt_fivetran_utils__no_quotes.git', 'revision': '34722549847a7eb6be1d2a97c0eb358167a0e249', 'name': 'dbt_fivetran_utils__no_quotes', 'version': '>0.1.0'} is not valid under any of the given schemas

已做排查

  • 用VSCode的Redhat YAML Language Support验证过所有YAML文件,格式无语法问题
  • 尝试调整引号的使用方式,错误信息未发生变化
  • 检查项目内所有包引用文件,仅在深层目录发现一个projects.yml,内容为:
packages:
    - local: ../

问题根源

dbt的包引用Schema明确禁止同一个包同时指定git/revision和version字段。报错信息里的dbt_fivetran_utils__no_quotes包配置同时包含了这两个冲突字段,导致验证失败。

解决步骤

  1. 定位冲突配置
    冲突配置大概率来自你fork的dbt_mixpanel__no_quotes包自身的packages.yml文件——该文件在引用dbt_fivetran_utils__no_quotes时,同时写了git/revision和version字段。

  2. 修正冲突配置
    打开dbt_mixpanel__no_quotes包内的packages.yml,删除version字段,只保留git和revision,示例修正后内容:

    packages:
      - git: "https://github.com/thleo/dbt_fivetran_utils__no_quotes.git"
        revision: "34722549847a7eb6be1d2a97c0eb358167a0e249"
        name: "dbt_fivetran_utils__no_quotes"
    
  3. 更新依赖并验证
    清理旧依赖后重新拉取:

    dbt deps --clean
    

    之后运行模型即可验证问题是否解决。

额外说明

dbt 1.5的包引用规则:

  • 通过Git源引用包时,必须使用git+revision(或branch/tag)的组合,不能与version字段混用
  • version字段仅适用于从dbt Hub拉取的官方包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:07:36