表没有按时产出,影响下游,严重的甚至可能影响线上效果。
打点缺失,看了报表才发现数据对不上。
数据统计出来,uv大于pv,很尴尬。
数据产出暴增,本来1000万的数据变成了3000万。
字段里面的枚举值和注释里面的对不上,没人能解释。
某些维度缺失,没法做进一步的数据分析。
做了一通分析,发现结果很离谱,一点点向前分析,发现打点有问题。
……
完整性Completeness:完整性是指数据信息信息是否存在缺失的状况,常见数据表中行的缺失,字段的缺失,码值的缺失。比如虽然整体pv是正确的,但在某个维度下,只有部分打点,这就是存在完整性的问题。不完整的数据所能借鉴的价值就会大大降低,也是数据质量问题最为基础和常见的问题。常见统计sql:count( not null) / count(*)
有效性Validity :有效性一般指范围有效性、日期有效性、形式有效性等主要体现在数据记录的规范和数据是否符合逻辑。规范指的是,一项数据存在它特定的格式,如:手机号码一定是11位的数字;逻辑指的是,多项数据间存在着固定的逻辑关系,如:PV一定是大于等于UV的。
准确性Accuracy:准确性是指数据记录的信息是否存在异常或错误。最为常见的数据准确性错误就如乱码。其次,异常的大或者小的数据也是不符合条件的数据。准确性可能存在于个别记录,也可能存在于整个数据集,例如数量级记录错误。这类错误则可以使用最大值和最小值的统计量去审核。
及时性Timeliness:及时性是指数据从开始处理到可以查看的时间间隔。及时性对于数据分析本身的影响并不大,但如果数据建立的时间过长,就无法及时进行数据分析,可能导致分析得出的结论失去了借鉴意义。比如:实时业务大盘数据,及时反映业务关键指标的情况,暴露业务指标的异常波动,机动响应特殊突发情况都需要数据的及时更新和产出。某些情况下,数据并不是单纯为了分析用而是线上策略用,数据没有及时产出会影响线上效果。
一致性Consistency:一致性是指相同含义信息在多业务多场景是否具有一致性,一般情况下是指多源数据的数据模型不一致,例如:命名不一致、数据结构不一致、约束规则不一致。数据实体不一致,例如:数据编码不一致、命名及含义不一致、分类层次不一致、生命周期不一致等。
唯一性Uniqueness: 在数据集中数据不重复的程度。唯一数据条数,和总数据条数的百分比。比如 count(distinct business key) / count(*),一般用来验证主键唯一性。
数据接入:接入上游表输入或者其它数据源的数据。
数据加工:编写sql生成目标数据表。
数据产出:定时调度任务生成数据表。
数据应用:下游数据分析、报表等应用数据。
数据探查
发现完整性、一致性、有效性、准确性、关联性等问题
解决的数据接入和数据产出阶段的问题
开发规范
发现数据及时性、数据一致性、数据准确性等问题
解决数据产出阶段的问题
数据监控
避免一致性、准确性等问题
解决数据生产阶段的问题
SELECT result
,COUNT(*)
FROM xxx.table_name
WHERE dt = 'xxxxx'
GROUP BY result ;
SELECT DISTINCT result
FROM xxx.table_name
WHERE dt = 'xxxxx' ;
SELECT COUNT(item_id)
,COUNT(DISTINCT item_id)
FROM xxx.table_name
WHERE dt = 'xxxxx' ;
SELECT count(DISTINCT a.itemid)
FROM xxx.yyy_log a
LEFT JOIN (
SELECT itemid
FROM xxx.zzzz
WHERE ds = '20210916'
) b
ON a.itemid = b.itemid
WHERE a.dt = '20210916'
AND b.itemid IS NULL ;
SELECT userid
,count(*) AS cnt
FROM xxx.yyyy_log
WHERE dt = '20210913'
GROUP BY userid
HAVING cnt > 5000 ;
SELECT COUNT(*)
FROM xxx a
LEFT JOIN yyy b
ON a.id = b.item_id
WHERE a.dt = '${bizdate}'
AND b.dt = '${bizdate}' ;
select /*+ mapjoin(a) */
a.shop_name,
a.total_price,
b.total_price
from sale_detail_sj a join sale_detail b
on a.total_price < b.total_price or a.total_price + b.total_price < 500;
数据产出行数波动监控
业务主键唯一性监控
关键字段空值监控
汇总数据合理性监控
用户进行规则配置
通过定时的调度任务触发检查任务执行
基于任务配置,获取样本数据
基于计算返回检验结果
调度根据检验结果,决定是否阻断干预(强依赖、弱依赖)
Apache Griffin(Ebay开源数据质量监控平台)
Deequ(Amazon开源数据质量监控平台)
DataMan(美团点评数据质量监控平台)