第7章 数据治理

7章 数据治理

7.1 元数据管理

元数据管理目前开源的框架中,Atlas框架使用的较多。再就是采用自研的系统。

1)元数据管理底层实现原理

解析如下HQL,获取对应的原数据表和目标表直接的依赖关系。

insert into table ads_user

select id, name from dws_user

依赖关系能够做到:表级别和字段级别 neo4j

2)用处:作业执行失败,评估他的影响范围。主要用于表比较多的公司。

atlas版本问题:

0.84版本:2019-06-21

2.0版本:2019-05-13

框架版本:

Apache   0.84    2.0  2.1

CDH  2.0

3)自研的元数据管理

 

7.2 数据质量监控

7.2.1 监控原则

1)单表数据量监控

一张表的记录数在一个已知的范围内,或者上下浮动不会超过某个阈值

    1. SQL结果:var 数据量 = select count(*)from where 时间等过滤条件
    2. 报警触发条件设置:如果数据量不在[数值下限, 数值上限], 则触发报警
    3. 同比增加:如果((本周的数据量 - 上周的数据量)/上周的数据量*100)不在 [比例下线,比例上限],则触发报警
    4. 环比增加:如果((今天的数据量 - 昨天的数据量)/昨天的数据量*100)不在 [比例下线,比例上限],则触发报警
    5. 报警触发条件设置一定要有。如果没有配置的阈值,不做监控

日活、周活、月活、留存(日周月)、转化率(日、周、月)GMV(日、周、月)

复购率(日周月)  30%

2)单表空值检测

某个字段为空的记录数在一个范围内,或者占总量的百分比在某个阈值范围内

    1. 目标字段:选择要监控的字段,不能选“无”
    2. SQL结果:var 异常数据量 = select count(*) from where 目标字段 is null
    3. 单次检测:如果异常数据量不在[数值下限, 数值上限],则触发报警

3)单表重复值检测

一个或多个字段是否满足某些规则

    1. 目标字段:第一步先正常统计条数;select count(*) form 表;
    2. 第二步,去重统计;select count(*) from  group by 某个字段
    3. 第一步的值和第二步不的值做减法,看是否在上下线阀值之内
    4. 单次检测:如果异常数据量不在[数值下限, 数值上限], 则触发报警

4)单表值域检测

一个或多个字段没有重复记录

    1. 目标字段:选择要监控的字段,支持多选
    2. 检测规则:填写“目标字段”要满足的条件。其中$1表示第一个目标字段,$2表示第二个目标字段,以此类推。上图中的“检测规则”经过渲染后变为“delivery_fee = delivery_fee_base+delivery_fee_extra”
    3. 阈值配置与“空值检测”相同

5)跨表数据量对比

主要针对同步流程,监控两张表的数据量是否一致

    1. SQL结果:count本表 - count关联表
    2. 阈值配置与“空值检测”相同

7.2.2 数据质量实现

       详见下篇   

7.3 权限管理(Ranger)

       详见下篇

7.4 用户认证(Kerberos)

​​    ​​​​    详见下篇

7.5 数据治理

 

资产健康度量化模型。

根据数据资产健康管理的关键因素,明确量化积分规则。根据数据基础信息完整度、数据存储和数据计算健康度、数据质量监控规则合理性等,完整计算数据资产健康分。

1)资产健康分基础逻辑

(1)健康分基本设定原则:

  •  健康分采用百分制,100最高,0分最低;
  •  健康度以表为最细粒度,每个表都有一个健康分;
  •  个人、业务版块、团队、一级部门、以及集团的健康分以所属表的健康分加权平均;
  • 数据表权重=(表字节数 + 1)再开立方根;空表的权重为1;

(2)数据表资产健康分:

数据表资产健康分score =(规范合规健康分*10% + 存储健康分*30%  + 计算健康分*30% + 数据质量健康分*15% + 数据安全健康分 * 15%);

2数据资产特征列表:

资产健康类型

特征

特征分计算逻辑

规范 Specification

规范健康分= 100 * sum(特征分)/count(特征)

有技术owner

0/1

有业务owner

0/1

有分区信息

0/1

有归属部门

0/1

表命名合规

0/1

数仓分层合规

0/1

表有备注信息

0/1

字段有备注信息

有备注字段数 / 总字段数

存储 Storage

存储健康分= 100 * 完成度

生命周期合理性

  • 永久保留表:不可再生源头表、白名单表、冷备表、最近93天有访问非分区表, 按100%完成度;
  • 未管理表:分区表但未配置生命周期,按0%完成度;
  • 无访问表:在93天前创建,但最近 93 天无访问,按0%完成度;
  • 新建表:创建时间小于93天,尚未积累访问数据和未配置合理生命周期,默认按80%完成度;
  • 普通表:以上之外普通表,系统计算建议保留天数与当前生命周期比值作为完成度;

计算  Calc

计算健康分= 100 * sum(特征分)/count(特征)

hdfs路径被删除

被删除,0分;否则为1

产出为空

连续15天无数据产出,0分;否则为1;

产出表未被读取

最近30天产出数据表无读取,0分;否则为1;

运行出错

最近3天任务运行有出错,0分;否则为1;

重复表/相似表

与其他数据表50%相似,则为0分,否则为1;

责任人不合理  ​

对应的调度节点责任人已经离职,或调度节点责任人在职但与数据表责任人不一致 ,0分;否则为1;

简单加工

生产sql只简单 select字段出来,没有 join、group;where 条件只有分区字段  ;0分,否则为1;

暴力扫描

表中被查询分区大于 90 天,同时被查询分区的总存储量大于 100G ;0分,否则为1;

两侧类型不一致

类似这个例子:

 select ... from table1 t1 join table2 t2 on t1.a_bigint=t2.a_string;

 这种情况在 on 条件中两边都被 double了,这个其实不合理;是个大坑, 会导致行为和用户期待不一致

数据倾斜 ​

长尾运行实例耗费时⻓高于平均值 20%,分数记为0,否则记为1;

需要列剪裁  

判断 select 语句及后续使用逻辑,是否 select 出来的列都被使 用,用被使用的列数/总 select 列数计算使用率,低于 50% 就需要列剪裁,0分,否则为1;

质量 Quality

质量健康分= 100 * sum(特征分)/count(特征)

表产出时效监控

qdc有定义产出时间预警或已经归属于某个生产基线;  0/1;

表内容监控

有配置表级规则;  0/1;

字段内容监控

有配置字段级规则;  0/1;

表产出SLA

X点及时性SLA测量函数:

  • realTime:数据实际产出时间
  • expectTime: 期望数据产出的时间点
  • n:数据产出周期(针对多次调度)

表内容SLA

1-触发监控规则/总监控规则数

字段内容SLA

1-触发监控规则/总监控规则数

安全 Security

安全健康分= 100 * sum(特征分)/count(特征)

数据分类

有明确设置归属的“资产目录” ; 0/1;

资产分级

有指定资产等级;  0/1;

字段级安全等级

有字段设置了安全等级;  0/1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一鸣888

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值