Dbt自动化测试实战教程

数据团队关键核心资产是给消费者提供可信赖的数据。如果提供了不被信任的数据,那么支持决策智能依赖于猜测和直觉。原始数据从不同来源被摄取智数据仓库,数据产品团队有责任定义转换逻辑,将源数据整合到有意义的数据产品中,用于报告和分析。敏捷数据产品团队在将数据用于分析和决策制定之前,使用自动化的数据质量测试来检查他们提供数据的有效性。

在这篇博文中,我们将介绍如何使用dbt通过不同类型的测试探测数仓中存储的数据。我们假设您对如何设置dbt有基本的了解,并且您有一个正在工作的项目。如果没有,请查看这篇关于如何在dbt中设置项目的博客文章。

通常数据质量保证是通过在DW上采用SQL查询的测试规范来执行的。有不同类型的测试规范,例如内部和外部一致性检查、KPI验证或访问验证。我们还可以在结构级别上探测传入数据,例如,交付数据的模式是否与已知结构相对应。

dbt提供了多种测试实现方式,可以使用" dbt test "命令执行测试用例。下面我们分别进行说明。

单一测试模型

我们先来谈谈单一测试模型,我们需要定义返回记录的SQL语句,这些记录没有通过某个条件。它们在项目的tests目录中(dbt默认为“tests”)定义sql文件。例如,我们检查交易数据的税率是否为正数百分比值:

SELECT 
	order_id
FROM 
	{
  { ref( ‘inb_transaction’) }}
WHERE
	TaxPercent < 0

此测试将返回所有具有负税率的交易,便于用户进一步检查非期望测试结果。

顾名思义,单一测试意味着单个测试。如果您发现反复编写类似的单一测试是重复工作,那么是时候切换到通用测试了。一般来说,通用测试是接受参数的参数化查询。它们可以作为属性添加到.yml文件中的现有模型上。

通用测试

DBT附带了四个“开箱即用”的通用测试:unique、not_null、accepted_values和relationships。例如,你希望验证源表和目标表之间数据一致性。下面是一个检查order_id的例子:

version 2:
 
models:
 - raw_transactions
   columns
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值