数据质量校验(1)

数据质量六大标准概述

  1. 完整性:不存在大量缺失(如平时日活1000,突然变100),不会有太多空值,不缺少某一维度的数据(如32个省少了一个)。指数据在创建、传递过程中无缺失和遗漏,包括实体完整、属性完整、记录完整和字段值完整四个方面。完整性是数据质量最基础的一项,例如员工工号不可为空。
  2. 一致性:指遵循统一的数据标准记录和传递数据和信息,主要体现在数据记录是否规范、数据是否符合逻辑。例如同一工号对应的不同系统中的员工姓名需一致。数据的规范(如手机号13位,IP地址格式等)与数据逻辑(如概率必须0-1 之间等)
  3. 准确性:指真实、准确地记录原始数据,无虚假数据及信息。数据要准确反映其所建模的“真实世界”实体。例如员工的身份信息必须与身份证件上的信息保持一致。
  4. 及时性:是指数据从产生到使用的时间间隔,数据如果不及时那最后分析得结果可能不具备借鉴意义。
  5. 唯一性:指一个数据只能有唯一的标识符。体现在一个数据集中,一个实体只出现一次,并且每个唯一实体有一个键值且该键值只指向该实体。例如员工有且仅有一个有效工号。
  6. 有效性:指数据的值、格式和展现形式符合数据定义和业务定义的要求。例如员工的国籍必须是国家基础数据中定义的允许值。

数据质量规则和脚本

原理:通过shell 调用 hivesql 来检验数据质量

创建存放校验数据的数据库

create database datacheck;

创建存放检验数据的表,表的字段就是我们要校验的指标


create table datacheck.table_count_add_stardard (
data_date string comment '数据分区',
database_name string comment '数据库名',
table_name string comment '表名',
table_type string comment '表类型(全量、增量)',
add_count bigint comment '当如新增记录数',
null_count bigint comment '表空值记录数',
duplicate_count bigint comment '表重复值记录数',
total_count bigint comment '全表记录数'
);

编写shell 脚本检验流程

#增量数据分区
do_date=$1
#所检测的表名
table_name=$2
#要检测空值的字段
null_colum=$3
#条件语句
null_where_sql_str=''
#切割字段为数组
array=(${null_colum//,/ })
for((i=0;i<${#array[@]};i++)) do
   if [ $i -eq 0 ];then
        null_where_sql_str=" where ${array[i]} is null "
   else 
        null_where_sql_str=" $null_where_sql_str or ${array[i]} is null"
   fi
done
#执行当日增量数据记录
add_count_result=`hive -e "select count(*) from ods.$table_name where dt='$do_date'"`
#全表空值记录数
null_count_result=`hive -e "select count(*) from ods.$table_name $null_where_sql_str"`
#重复值记录数
duplicate_count_result= `hive -e "select count(*) from (select count(*) from ods.$table_name group by $null_colum having count(*) >1 )"`
#全表记录数
total_count_result=`hive -e "select count(*) from ods.$table_name"`
#将结果插入结果表
hive -e "insert into datacheck.table_count_add_stardard values($do_date,'datacheck','$table_name,'increment',$add_count_result,$null_count_result,$duplicate_count_result,$total_count_result')"
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值