📜  什么是dbt?

📅  最后修改于: 2022-05-13 01:58:43.668000             🧑  作者: Mango

什么是dbt?

dbt是一个开源转换工具,旨在简化分析工程师在数据流水线工作中的工作。特别是在ETL 过程中只使用了 T。最大的特点是它专注于实现软件原则,这些原则不仅在软件行业很常见,而且现在也被引入到分析领域。

关键概念:

  • 模型: SQL 选择语句,将表作为插入、修改并将结果作为表输出。
  • 包:一个 dbt 项目,它是一组 SQL 任务。
  • 源:源是数据存储库中开始转换的表。
  • Exposure:表示 dbt 项目的较低级别使用。

为什么是 dbt?

在大多数数据管道中,对版本控制、测试和文档的附加不太重要,而这是维护管道的重要因素。当仪表板中的错误可以通过彻底检查和数据列表图快速检测到,而不是浪费时间来查找问题时,可以看到时间管理的显着改进。该测试将首先通知开发人员某些事情发生了故障,而不是客户端使用仪表板来检测某些事情已被关闭。

目标用户:

  • Dbt 有两个版本:dbt Cloud 和 dbt 命令行界面 (CLI)。虽然 dbt Cloud 有一个 UI 可以处理一些配置,并且可以看到转换后的数据的预览,但需要将与 CLI 中相同的命令应用于 dbt Cloud。由于缺乏 UI,dbt 不适合喜欢使用工具并制定尽可能小的计划的业务分析师。 Dbt 是专注于转型的全球转型技术的一部分。
  • Dbt 对于大型数据组非常有用,因为它是为数据管道过程中的特定角色而构建的:分析工程师。对于只会产生影响的大型数据组来说,这是一个特殊的新角色。 Dbt 可用于满足分析工程师的所有需求。其他角色,如数据工程师和数据分析师,负责数据湖管理、提取和上传数据库中的数据和业务信息。

主要功能:

1. 文档:

在使用新功能更新数据管道或其他开发人员接管项目时,文档是必不可少的。来自不同表的元数据及其关系由 dbt 提取并以清晰的概览进行汇总。

  • 不同的模型包含有关特定细节的修改信息,例如类型和包、表的描述、不同的列及其名称、类型和定义以及可用的测试。此外,可以找到对其他表的依赖或来自其他表的引用。源代码和组合代码都存储在这里。

  • 不同的软件包包含附加功能。注意: dbt hub 中的开源社区已经有许多包中可用的分析问题解决方案。
  • 可以指定和记录开发第一阶段模型的来源。例如,此源将是加载了 Databricks 的 Delta 表。
  • 不同的仪表板使用事实表和大小表,可以在暴露中指定和定义。请注意,这只是一种表示形式,数据不会自动流向仪表板。

2.数据沿袭:

数据沿袭图是显示数据的来源和去向的重要因素。许多数据组通过查看可视化数据列表来显示从数据仓库中的源表到转换后的各种表的数据流,最后到为数据带来洞察力的仪表板。

数据沿袭

3.版本控制:

使用 git 进行版本控制,并使用选定的 git 存储库来存储代码。模型、测试、曝光、来源、项目的配置以及不同使用的包都是版本化的。

4.增量变换:

  • 增量转换数据对于处理大数据是必要的。
  • 该表可以设置为增量,并且可以添加一些 jinja 代码,以便过滤器只能应用于增量运行。
  • 为避免重复行,可以设置唯一键。为了在严格的截止条件下不丢失大量数据,可以使用窗口。但是如果数据晚于时间窗口,数据就会丢失。

使用增量表时要记住的事项:

  • 在顶部表示时间或计数的列作为序列键。
  • 具有唯一键的行,或唯一的行组合以避免重复行。
  • 在行中进行更新时,一列表示更新该行以将该行用作需要转换数据的切割点的时间。

5. 测试:

测试对于确保数据质量和及早发现问题很重要。 Dbt 提供了将测试集成到数据管道中的方法。有些测试已经在 dbt 上发布,有些可以在 dbt Hub 的开源包中找到。

有两种类型的测试:定制测试通用测试

  • 定制测试:定制测试是一种可测量的测试,可以在不同的模型上重复使用。注意:可以在给出错误之前设置允许的失败行数。也可以将失败的行写入表中以供参考。

  • 泛型测试:泛型测试在某些型号上进行测试,如果没有返回行,则测试成功。可以组合任意数量的表来测试特定的表。