数据开发中的数据质量校验

本文详细介绍了数据开发中的关键校验步骤,包括度量值的可加性检查、左连接数量验证、数值类型与精度校验、每日分区数据监控、重复值和NULL检测、时间数据的准确性以及数据格式规范。强调了数据逻辑错误的隐蔽性,并提供了SQL示例来展示如何进行这些校验,以确保数据的准确性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:

数据开发不同于后端开发之处在于:
后端开发可是有测试👧帮忙进行功能测试的噢~
而数据开发工程师却没有😰😂😭

数据逻辑错误不像功能bug那么明显,计算结果错误并不会使程序报错
对此建立数据逻辑校验机制,包括👇

  1. 左联前后数量校验(联表后数据量=左表数据量)
  2. 度量值是否可加
  3. 每日分区数据量统计
  4. 数值类型校验,是否越界,是否损失精度
  5. 重复值和NULL检测
  6. 时间数据类型校验,注意时区

1、度量值是否可加

  • 统计UV时,当天总UV 不能通过 当天各页面UV求和 得到,7日总UV 不能通过 7日的UV求和 得到
  • 统计库存时,昨天库存 不能和 前天库存 相加,佛山库存 可与 广州库存 相加
  • 统计增长率时,省的增长率 不能通过 市的增长率直接求和或求平均 得到
指标命名规范

2、左联前后数量校验

  1. A表 LEFT JOIN B表 得到 C表,应满足 C 表行数 = A 表行数 C表行数=A表行数 C表行数=A表行数
  2. 如果 C 表行数 > A 表行数 C表行数>A表行数 C表行数>A表行数,就说明发生笛卡儿积
  3. 此时应当 检查B表的联表键是否有重复

3、数值类型校验,是否越界,是否损失精度,是否计算出错

  • 不同数据库的数值数据类型不同,转换时可能出错
  • SUM一列INT类型数据后,如果结果超出INT范围,就要写到BIGINT类型的列
  • 10元运费分摊到3个商品时,金额只保留2位小数
    错误分法:3.33+3.33+3.33=9.99
    正确分法:3.33+3.33+3.34=10.00
  • STRING列和INT列匹配时,要把INT转为STRING,因为STRINGINT后,前面的0会被吃掉
  • 对于含有除法的指标计算时,须考虑除以0的情况,addK可防止0除错误

4、每日分区数据量监控

在HIVE上查询

DESC FORMATTED 表名 PARTITION(分区名="分区值");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值