数据质量漫谈
- 表没有按时产出,影响下游,严重的甚至可能影响线上效果。
- 打点缺失,看了报表才发现数据对不上。
- 数据统计出来,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生成目标数据表。
- 数据产出:定时调度任务生成数据表。
- 数据应用:下游数据分析、报表等应用数据。
- 数据探查
- 发现完整性、一致性、有效性、准确性、关联性等问题
- 解决的数据接入和数据产出阶段的问题
- 开发规范
- 发现数据及时性、数据一致性、数据准确性等问题
- 解决数据产出阶段的问题
- 数据监控
- 避免一致性、准确性等问题
- 解决数据生产阶段的问题
SELECTresult
,COUNT(*)
FROM xxx.table_name
WHERE dt = 'xxxxx'
GROUPBYresult ;
SELECTDISTINCTresult
FROM xxx.table_name
WHERE dt = 'xxxxx' ;
SELECTCOUNT(item_id)
,COUNT(DISTINCT item_id)
FROM xxx.table_name
WHERE dt = 'xxxxx' ;
SELECTcount(DISTINCT a.itemid)
FROM xxx.yyy_log a
LEFTJOIN (
SELECT itemid
FROM xxx.zzzz
WHERE ds = '20210916'
) b
ON a.itemid = b.itemid
WHERE a.dt = '20210916'
AND b.itemid ISNULL ;
SELECT userid
,count(*) AS cnt
FROM xxx.yyyy_log
WHERE dt = '20210913'
GROUPBY userid
HAVING cnt > 5000 ;
SELECTCOUNT(*)
FROM xxx a
LEFTJOIN 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
fromsale_detail_sjajoinsale_detailb
ona.total_price < b.total_priceora.total_price + b.total_price < 500;
- 数据产出行数波动监控
- 业务主键唯一性监控
- 关键字段空值监控
- 汇总数据合理性监控
- 用户进行规则配置
- 通过定时的调度任务触发检查任务执行
- 基于任务配置,获取样本数据
- 基于计算返回检验结果
- 调度根据检验结果,决定是否阻断干预(强依赖、弱依赖)
- Apache Griffin(Ebay开源数据质量监控平台)
- Deequ(Amazon开源数据质量监控平台)
- DataMan(美团点评数据质量监控平台)
链接四:https://developer.aliyun.com/article/60908
如何通过Knative轻松实现应用Serverless化交付
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。