导入
包概述
了解 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 包可能引发依赖冲突。 |
本地包的优缺点
| 优点 ✅ | 缺点 ❌ |
|---|---|
| 本地项目中的每次更改都可以立即测试。用户对包拥有完全控制权。 | 本地包难以复用,因为仓库存储在物理设备上。本地包不受版本控制。 |