一、DBT是什么?
关于DBT
dbt 使分析工程师能够通过简单地编写select语句来转换其仓库中的数据。dbt 将这些select语句转换为表和视图。 dbt在ELT(提取、加载、转换)过程中执行 T——它不提取或加载数据,但它非常擅长转换已经加载到仓库中的数据。
使用dbt的两种方式
使用 dbt 有两种主要方式——使用 dbt Cloud 中基于 Web 的集成开发环境 (IDE),或者使用命令行界面 (CLI)。
- 在dbt cloud中开发
- 通过CLI在本地开发
- 安装dbt
- 设置配置文件以连接到您的数据仓库
- 在代码编辑器(如 Atom 或 VSCode)中构建您的 dbt 项目
- 使用终端执行命令
dbt 还能做什么?
dbt 具有许多使其更加强大的附加功能,包括:
-
代码编译器:在 dbt 中,SQL 文件可以包含 Jinja,一种轻量级的模板语言。 在 SQL 中使用 Jinja 提供了一种在查询中使用控制结构(例如 if 语 句和 for 循环)的方法。 它还允许通过宏共享重复的 SQL。
-
文档: 可以为每个模型和字段编写描述(纯文本或markdown)。这些描述以及附加的隐含信息(例如,模型血缘,或应用的字段数据类型和测 试)可以生成为网站并与您更广泛的团队共享,为与 dbt 交互的任何人提供易于参考的数据手册。
-
测试:dbt 提供了一种通过对模型生成的结果进行断言来提高每个模型中 SQL 完整性的方法。您可以在模型中测试指定列是否仅包含:非空值、 唯一值、枚举值、引用完整性(主外键约束)。 可以轻松扩展测试以适应特定于您组织的业务逻辑——任何以select查询的形式对模型做出的断 言都可以转换为测试。
-
包管理:dbt 附带一个包管理器,它是允许分析人员使用和发布 dbt 代码的公共和私有存储库。
-
种子文件加载器:一些数据源(称为种子文件)可以在您的项目中保存为 CSV 文件,并通过使用seed命令加载到您的数据仓库中。
-
数据快照:通常,数据源中的记录是可变的,因为它们会随着时间而变化。dbt 提供了一种机制来对某个时间点的原始数据进行快照。
-
了解原始数据源:由于 dbt 从您的数据仓库中已经加载的原始数据中进行select查询,因此了解这些表和模式在您的仓库中的作用非常有用。 在 dbt 中将原始数据定义为 Source 允许您:
- 记录并测试加载到仓库中的数据
- 根据指定限制检查数据的新鲜度,以帮助识别上游问题。
- 了解哪些模型取决于每个数据源。