为了账号安全,请及时绑定邮箱和手机立即绑定

通过节点选择进行dbt代码审查中的数据验证

对资源组进行自动化的数据检查,以确保全面覆盖

如果你使用 dbt 有一段时间了,你可能知道 节点选择 有多么方便。它可以通过只运行更新项目后的指定资源来省时省算力。例如,非常有用的 state:modified+ 选择器可以让你只运行修改了的资源及其下游依赖,将你的构建范围限制在项目中修改的部分。

在这篇文章里,我将展示如何将相同的节点选择逻辑应用于dbt项目的数据检查中,作为PR审查的一部分来执行。这里说的不是dbt测试,而是用于自动化数据验证的检查,确保你的[关键模型]覆盖,无论你在数据链的哪个环节工作。

避免数据差异

更新你的dbt项目中的模型后,你首先想看到的是数据变化的影响,你很可能只关心变化。例如:

  • 展示我的dbt项目更新前后的数据不一致,
  • 帮我用视觉的方式来调查这些变化

这在大型项目中可能非常棘手,因为一个模型的改动可能会影响到许多后续模型。手动检查太繁重了,你最不想的就是在数据中玩“找不同”的游戏,试图用肉眼看出开发与生产数据间的差异。

使用此更新的拉取请求(PR)评论模板进行您的dbt数据项目,确保在数据项目PR中进行数据变更验证的结构化方法。medium.com
节点选择的帮助

只需看一下Mattermost数据仓库的这一部分视图,这包含大约200个模型的项目:

Mattermost数据仓库的lineage 保持原文不变,若需翻译可使用“血缘关系”或“谱系”。

大型 dbt 项目可能很难处理和评估其影响。

在一个大型项目中进行修改后,你该如何检查所有受影响的模型?

  • 手动检查这些模型?这可真是不少活儿。
  • 设置全项目检查?这会检查很多与问题无关的资源。
选择节点让影响评估工作更易于操作

在这里,节点选择特别有用。您可以按照条件过滤模型和资源。这里有一个来自Mattermost项目的实际PR示例,只显示modified+模型。

节点选择有助于界定范围并确定数据来源,从而使影响评估更加容易操作

这给你提供了一个更易于管理的谱系图,但每次PR时,受影响的区域会发生变化,因此你需要一种自动为受影响区域内的所有模型执行检查的方法。

如何自动检查模型的子集呢?

你知道如何使用节点选择来选择资源的子集。使用Recce,你可以对这些节点组进行批量数据验证检查,使用与dbt相同的节点选择的语法

  • 不用为每个单独的模型写检查
  • 不用为每个PR写检查

以下是一个 Recce 的示例配置,它会完成以下任务:

  • 行数差异检查modified+ 表中
  • 模式差异检查modified 模型之间
    checks:  
    - name: 行数差异检测  
      description: 检查所有表模型的行数差异情况  
      type: row_count_diff  
      params:  
        select: state:modified+,config.materialized:table  
    - name: 架构差异检测  
      description: 检查已修改模型的架构差异  
      type: schema_diff  
      params:  
        select: state:modified

无需指定任何具体的模型——使用select选项,选择语法允许你匹配所有匹配的资源。

高信号强度,低配置

如果任何模型不匹配,Recce 会在您的 PR 评论线程中发布的检查摘要中显示出来。

侦察报告摘要将指出哪些资源的数据存在不一致的地方。

然后你就可以用审查模式启动Recce,查看具体发生了哪些变化,找出问题的真正原因。

自定义检查范围

节点选择的美妙之处在于,你可以按照自己的意愿选择要检查的模型。

  • 只想检查关键模型?只需使用一个 tag
  • 只想检查修改过的模型吗?使用 modified
  • 只想检查物化表?使用 config.materialized:table

你可以将模型分组归类并给它们打标签,然后对这些模型进行特定检查。不管项目中发生了什么,只要这些模型位于受影响区域内的,就会被检查。

怎么才能得到它

Recce 包含基于节点选择的数据检查功能,其中包括其数据验证套件。现在就可以下载 Recce OSS,Recce Cloud 也即将推出。快来看看!

介绍Recce:适用于dbt项目的数据验证工具包medium.com
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消