在 dbt 中,packages.yaml 文件在添加 git 包时给出 `yaml malformed` 错误并抛出无效架构错误。如何解决架构错误?

问题描述 投票:0回答:1

背景: 我正在使用 Fivetran 的 dbt 包的一个分支。

  • dbt 版本:11.5.1
  • 终端:iterm
  • 包类型:git
  • git 服务器:GitHub

我已将其添加到顶级

packages.yml
文件下,如下所示:

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 语言支持包来验证 YAML 文件。

我已经尝试了删除值周围的引号的所有组合,仅在某些值周围添加引号......等等。

我已经检查了我的 dbt 项目中的所有

package.yml
参考文献。只有一个其他
projects.yml
文件,它嵌套在项目的更深处,唯一的包引用是:

packages:
    - local: ../

移动引号不会导致任何不同的错误消息,并且 YAML 文件似乎有效,所以我不确定为什么会收到有关架构的错误。

git yaml command-line-interface schema dbt
1个回答
0
投票

这与此ticket中指出的错误类似,并且具有类似的原因。

快速解释:对于 git 包,唯一必需的属性值是

git
,而
name
不是 git 类型包识别的属性。

您可以查看 here dbt-core 的项目代码,了解它是如何定义的,以及可选属性是什么。

根据文档,可以如下引用git包:

packages:
  - git: # your git url for the package repo (string)
    version: # optional (string, number, array)
    subdirectory: # optional (string)

因此您更正后的条目将如下所示:

packages:
...
  - git: "https://github.com/thleo/dbt_fivetran_utils__no_quotes.git" # git URL
    revision: "34722549847a7eb6be1d2a97c0eb358167a0e249"


资源:

  1. dbt-core issues 页面上的类似问题(已关闭)
  2. git 包合约定义
  3. dbt 的 YAML 验证器
© www.soinside.com 2019 - 2024. All rights reserved.