Logo
Section 1 / 7

包概述

了解 dbt 包及其用途。

导入

包概述

了解 dbt 包及其用途。

dbt 包的优缺点

优点 ✅缺点 ❌
包封装了可复用的代码,使用户能够在项目中利用内置组件。包促进了标准化和一致性,因为逻辑与项目本身分离。维护时间减少,因为大多数包由一组用户共同维护。包有助于协作,无论是团队内部还是与 dbt 社区之间,用户都可以为其他包做出贡献。使用包可能导致复杂的依赖管理,可能出现依赖冲突。由于包并非原生功能,因此并非所有包都经过充分测试或定期维护。
  • 模型(Models)
  • 宏(Macros)
  • 测试(Tests)
  • 文档(Documentation)
  • **数据源(Sources):** 必须在目标项目中重新定义。
  • **配置文件:** `dbt_project.yml` 和 `profiles.yml` 应在目标项目中定义,即使它们存在于包中。
1packages: 2 - package: dbt-labs/snowplow 3 version: 1.1.1
1packages: 2 - package: dbt-labs/snowplow 3 version: [">=1.1.1", "<1.2.0"]
...
嵌套依赖
...
重复依赖
...
依赖冲突

Hub 包的优缺点

优点 ✅缺点 ❌
Hub 包使用语义化版本控制,是处理依赖管理的良好方式。Hub 包拥有庞大的社区支持,因此有大量支持和文档资源。要被接受,Hub 包必须遵循一套最佳实践。Hub 包由他人维护,可能随时停止维护。Hub 包是公开的,因此不适合用于内部依赖。

Git 包的优缺点

优点 ✅缺点 ❌
任何配置为 Git 的 dbt 项目都可以作为 dbt 包使用。Git 包可以是私有的。Git 包不会被评估,外部 Git 包的使用者应格外谨慎。Git 包可能引发依赖冲突。

本地包的优缺点

优点 ✅缺点 ❌
本地项目中的每次更改都可以立即测试。用户对包拥有完全控制权。本地包难以复用,因为仓库存储在物理设备上。本地包不受版本控制。

使用 Jinja 的动态模型

从 dbt Hub 下载包