文章目录
概述:
数据开发不同于后端开发之处在于:
后端开发可是有测试👧帮忙进行功能测试的噢~
而数据开发工程师却没有😰😂😭
数据逻辑错误不像功能bug那么明显,计算结果错误并不会使程序报错
对此建立数据逻辑校验机制,包括👇
- 左联前后数量校验(联表后数据量=左表数据量)
- 度量值是否可加
- 每日分区数据量统计
- 数值类型校验,是否越界,是否损失精度
- 重复值和NULL检测
- 时间数据类型校验,注意时区
1、度量值是否可加
- 统计UV时,当天总UV 不能通过 当天各页面UV求和 得到,7日总UV 不能通过 7日的UV求和 得到
- 统计库存时,昨天库存 不能和 前天库存 相加,佛山库存 可与 广州库存 相加
- 统计增长率时,省的增长率 不能通过 市的增长率直接求和或求平均 得到
指标命名规范
2、左联前后数量校验
- A表
LEFT JOIN
B表 得到 C表,应满足 C 表行数 = A 表行数 C表行数=A表行数 C表行数=A表行数 - 如果 C 表行数 > A 表行数 C表行数>A表行数 C表行数>A表行数,就说明发生笛卡儿积
- 此时应当 检查B表的联表键是否有重复
3、数值类型校验,是否越界,是否损失精度,是否计算出错
- 不同数据库的数值数据类型不同,转换时可能出错
- 在
SUM
一列INT
类型数据后,如果结果超出INT
范围,就要写到BIGINT
类型的列 10元
运费分摊到3
个商品时,金额只保留2位小数
错误分法:3.33+3.33+3.33=9.99
正确分法:3.33+3.33+3.34=10.00STRING
列和INT
列匹配时,要把INT
转为STRING
,因为STRING
转INT
后,前面的0会被吃掉- 对于含有除法的指标计算时,须考虑除以0的情况,addK可防止0除错误
4、每日分区数据量监控
在HIVE上查询
DESC FORMATTED 表名 PARTITION(分区名="分区值");