我们如何处理多个 DBT 项目

zaf*_*far 9 python database gitlab dbt

任何人都可以分享如何在 dbt 中组织多个项目,并给出最佳实践。我目前的抽象架构层次结构如下

Analytics 
--.dbt/
-----profiles.yml
--projects/
-----project_1/
----------models/
----------dbt_project.yml
-----project_2/
----------models/
----------dbt_project.yml
--tests/
-----projects/
----------project_1/
----------project_2/
Run Code Online (Sandbox Code Playgroud)

为projects_1 或project_2 创建模型都工作得很好。

但是当我尝试运行 project_2 的测试(模型单元测试)时,问题就出现了。当我运行时,它给出错误“在 temp/project_1/ ... 的预期路径中找不到 dbt_project.yml ”(我的单元测试)我尝试运行的是project_2)但是,路径绝对正确,但 dbt_project.yml 的查找位于错误的目录中(在临时目录中)。顺便说一句,一些project_2模型确实依赖于少数project_1模型。

任何人都可以分享或参考我在哪里可以获得解决此类多 dbt 项目问题的帮助。

gsc*_*ott 4

像许多事情一样,您在这里问的是两个子问题:

  1. 是否可以?
  2. 这是不是一个好主意?

是否可以?

虽然您没有提到您正在运行的数据平台/方言,但是的,这是可能的。示例和建议如下:

这是不是一个好主意?

我认为杰里米在这篇帖子的回复中很好地阐述了支持和反对的主要论点:

但是,如果您已经决定要这样做并且不想要单一存储库,并且您对实现此目的的“最佳”方式最感兴趣,那么我会推荐 Stefano 的这篇文章:

TLDR:是的,这是可能的。最好的建议方法是管理 generate_schema_name/generate_database_name宏或在主项目导入的包中定义低级模型。