来自本地存储库的“dbt deps”

Pra*_*tta 1 dbt

是否允许创建本地 dbt deps 存储库,以便“dbt deps”命令应该从本地存储库下载库?

N.B: Our client is not interested to connect to external network.
Run Code Online (Sandbox Code Playgroud)

And*_*son 5

是的,这是可能的,前提是存储库已在本地克隆或复制。

dbt 文档的 Packages 页面准确地告诉您如何执行此操作

可以通过指定项目路径来安装本地存储的包,如下所示:

packages:
  - local: /opt/dbt/redshift # use a local path
Run Code Online (Sandbox Code Playgroud)

本地包只能用于特定情况,例如,测试对包的本地更改时。

注意:我认为值得重申文档中给出的警告。您现在将拥有下载、克隆正确版本的软件包以及持续保持软件包最新的工作。

至于这在实践中是如何运作的。考虑以下示例:

  • /Users/michelle/repos/my_dbt_project我的 dbt 项目所在的位置(包含dbt_project.ymlpackages.yml
  • /Users/michelle/repos/dbt_utils我之前克隆dbt-utils存储库的位置

在这个例子中我packages.yml应该看起来像

packages:
  - local: /Users/michelle/repos/dbt_utils # use a local path
Run Code Online (Sandbox Code Playgroud)

请注意,外部包并不位于我的 dbt 项目目录内,而是位于其外部。虽然将其包含在存储库中应该可行,但这不是最佳实践。这篇外部包开发文章更加深入。