数据中台实战课
郭忆
网易大数据专家
立即订阅
3834 人已学习
课程目录
已完结 19 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (1讲)
开篇词 | 数据中台,是陷阱?还是金钥匙?
免费
原理篇 (4讲)
01 | 前因后果:为什么说数据中台是大数据的下一站?
免费
02 | 关键抉择: 到底什么样的企业应该建数据中台?
03 | 数据中台建设三板斧:方法论、组织和技术
特别放送|史凯:建设数据中台到底有什么用?
实现篇 (12讲)
04 | 元数据中心的关键目标和技术实现方案
05 | 如何统一管理纷繁杂乱的数据指标?
06 | 数据模型无法复用,归根结底还是设计问题
07 | 同事老打脸说数据有问题,该怎么彻底解决?
08 | 交付速度和质量问题解决了,老板说还得“省”
09 | 数据服务到底解决了什么问题?
10 | 数据服务难道就是对外提供个API吗?
11 | 怎么一劳永逸地解决数据安全问题?
12 | 数据的台子搭完了,但你还得想好戏该怎么唱
13 | 数据研发就只是写代码吗?
14 | 数据被加工后,你还要学会使用和管理数据
15 | 数据中台在网易电商业务的最佳实践
结课测试 (1讲)
结课测试 | 建设数据中台的这些知识,你都掌握了吗?
结束语 (1讲)
结束语 | 数据中台从哪里来,要到哪里去?
数据中台实战课
15
15
1.0x
00:00/00:00
登录|注册

07 | 同事老打脸说数据有问题,该怎么彻底解决?

郭忆 2020-04-17
你好,我是郭忆。
上一节课,我带你从模型设计层面,逐步将分散、杂乱、烟囱式的小数仓整合成了可复用、可共享的数据中台,数据研发效能提升了一倍。那是不是交付数据足够快,使用数据的人就满意了? 当然不是,来看发生在我身边的一件事儿。
供应链部门运营陈英俊(化名)每天上班第一件事情,就是打开供应链辅助决策系统(数据产品),根据系统上给出的商品库存数据、区域下单数据,制订商品的采购计划,然后发送给供货商。可是今天当他准备工作时,突然发现系统中部分商品库存数据显示为 0,他第一时间将问题反馈给了数据部门。与此同时,与他一样无法工作的还有供应链部门的其他 50 多名运营。
图1 ADS层商品库存表加工链路图
接到投诉后,负责库存域的数据开发郝建(化名)立即开始定位,首先就“商品库存”指标的产出表 ads_wms_sku_stock_1d 进行排查,确认它产出任务没有问题,是这个任务的上游输入表数据有问题,引发下游表数据异常。
从数据血缘图中你可以看到,ads_wms_sku_stock_1d 上游有 20 多张表,郝建逐层校验是哪个表的数据出现问题,结果锁定在了 dwd_wms_inbound_stock_df。这张表的产出任务在前一天有一次线上变更,任务代码存在漏洞,对部分商品入库数据格式解析异常,但是没有将异常抛出,导致产出数据表 dwd_wms_inbound_stock_df 数据异常,进而影响了所有下游表。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据中台实战课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(21)

  • 吴科🍀
    数据部门作为下游系统,上游业务系统变更,往往不能第一时间通知,第二天跑批是才发现,早晨五点起来处理太平常不过了。
    资源抢占也时常发生,分析师临时加了一个任务跑全量的数据,还加到了资源主列队中,第二天所有跑批都延迟了。
    数据部门,要规范各种数据相关的变更才能解决。实际中,我们数据部门都是弱势的。
    😂

    作者回复: 你说的都是大实话。

    我真心觉得数据开发真是苦逼的职位,白天忙需求,晚上接报警,因为指标业务口径不一致、数据质量问题天天被人怼,处于弱势地位,工具产品也不到位,所以需要数据中台来拯救他们。

    感谢你的阅读,期待与你在留言区再次相遇~

    2020-04-17
    3
    10
  • 崔军伟
    DQC 全链路监控功能不错,还需要在各个节点上增加执行时间和时长,监控各节点执行时长也很重要。
    节日促销异常问题:可以将监控的所有指标作为数据,通过机器学习训练出稽核规则模型,这样每天每次任务跑完的指标,由稽核规则模型判别这次任务是否为异常。

    作者回复: 赞, 确实基于AI去判断稽核失败到底是正常失败还是异常失败,是一条可行的路,至少可以降低人接入的频率。Good!

    感谢你的阅读,期待与你再次相遇~

    2020-04-17
    2
  • 你好
    老师,对于DQC中的规则控制里的强弱规则,是怎么控制调度流程继续或者终止的呢?怎么实现的。。。谢谢老师

    作者回复: 你好,通过azkaban中任务执行的后置检查条件执行的,在任务执行后,会自动开始执行稽核校验任务,如果任务失败的话,调度系统会根据任务的执行结果,中断任务流的执行。

    感谢你的提问,期待下次与你再会~

    2020-04-27
    1
  • 小桥流水
    考虑增加2个指标
    1、不同时间点的任务完成率
    2、当天累计任务完成率

    作者回复: 这两个指标,对于预防一些大面积的故障,还是有帮助的,例如基础设施层面的故障。不过可能粒度还是太粗了,最好是能够到任务粒度的,才能起到预警的作用。如果只是衡量结果,我觉得只要一个基线任务产出时间完成率就够了。

    感谢你的阅读,期待与你再次相遇~

    2020-04-18
    1
    1
  • leslie
    数据规则,各自为战。最近刚碰到数据问题,历史遗留下来的数据库设计造成的坑;虽然之前指定了一堆相应的规则,可是提交层还是出了不少隐患。
    提交到平台其实是一个不错的方式与方法:多方面皆有隐患,今天的课程倒是引发了一些思路和操作方式。
    现在来回答今天的问题:误判的原因是源自对于某些表的数据量或者说设计上做复杂了,过于精细有时反而会细致过度;例如我们经常会看到云数据库的分析报告,正确率是站在365天的基础上而非每年的数个双11类似场景的,这其实就是需要对于项目的理解,数据的设计越复杂在特殊场景的适用性越难准确;这其实是一个蛮纠结的事情。
    谢谢老师今天的分享,期待后续的分享。

    作者回复: 感谢你的肯定和鼓励,看到能够引发你的一些思考,我真的觉得这篇文章还是很有意义的。

    再来谈谈我在课后留的这个问题。其实稽核监控的规则设定,都是根据日常流量的正常波动范围来设定的,如果遇到大规模的引流或者重大促销,必然会不适用,所以如果不调整,大促期间,稽核监控基本全部会触发报警,也失去了早发现早恢复的用途。

    所以一般在大促期间,我们一般会根据历史大促的经验,预留一些Buffer,来调整稽核监控。

    感谢你的阅读,期待与你再次相遇~

    2020-04-17
    1
  • JohnT3e
    关于全链路监控深有体会。如果问题不早发现,而最终由业务反馈的话,可能会面临整个数据流程的数据回滚和重新加工,进而引发连锁反应,导致更多任务超时或者错误。

    作者回复: 看来你也遇到了,哈哈。希望07数据质量的介绍对你有所帮助,能够解决你当前面临的问题~

    2020-04-17
    1
  • 雷传盛
    郭老师,有什么数据质量管理工具可以实现的么?
    2020-07-09
  • WeehuaZheng
    azkaban.flow.1.days.ago,看到这个参数,请问郭老师,你们网易的任务调度系统是用azkaban吗?还是在此基础上做了二次开发?我们团队2018-2019就是用azkaban做调度的,为了方便设置前后依赖,我们采用了flow依赖,每一层是一个flow,比如ods_flow,dwd_flow,但这样会存在木桶原理,每个flow的结束时间就是最长的那个任务,当有几千个任务的时候,任务运行非常不稳定,每天凌晨人肉值班,非常辛苦。

    作者回复: HI, 你好,WeehuaZheng,

    我们的调度系统是基于开源的azkaban 进行的二次开发,至于你提到的flow之间的依赖,我们支持跨flow的job之间的依赖设置,这个属于自研的feature,基本原理是在job运行前,会周期性的检查前置依赖节点运行状态,只有依赖job 运行完成后,才能被执行。这个可以避免你说的flow级别的依赖木桶效应。

    感谢你的提问,欢迎你有任何数据建设中的问题,在留言区与我们分享~祝好~

    2020-05-22
  • 外星人
    额外起任务做数据校验和资源额外使用,怎么做衡量啊?

    作者回复: 你好,数据质量的稽核监控,本质上也是提交了一个数据校对任务到yarn上执行,必然会涉及到计算资源的消耗。所以并不是每个表都需要稽核监控,只有核心链路的表才需要稽核监控。

    那问题来了,什么是核心链路的表,这个主要取决于应用,只有影响到下游核心应用的表,才是核心表,这些表需要添加稽核监控。比如,老板每天都要看的KPI报表,上游产出链路的所有的表,都需要添加稽核监控~

    感谢你的提问,你的问题挺好的,相信很多人都有这样的困惑~祝好~

    2020-05-21
  • keke
    给这种大促活动单独设定一套稽查规则,随时切换~

    作者回复: 你好,你说的确实是一种可行的方法,不过,一般可以通过横向对比数据之间的一致性趋势来进行数据的初步判断。

    感谢你的留言~祝好~

    2020-05-20
  • zhuxueyu
    来自传统企业的科技公司的大数据部门。
    公司数据质量问题的根因更多是:
    1、业务终端人员操作不规范,导致数据错误、数据不一致等
    2、某一类系统设计欠缺,导致缺少核心字段等
    诸如上面两种根因,单纯是从数据层面建立全链路监控,只能监测到数据的表象问题。但整个过程最令人头疼往往是要解决上游终端/系统的规范性操作、合理设计等问题

    作者回复: 你好, 这部分还是要从流程规范的层面来推动业务系统的改造。

    举个例子来说吧,对于日志格式的规范,要与业务系统定义好日志的格式,我们有一个日志管理平台,可以定义日志格式,然后监测不符合规范的日志,出现问题,第一时间发现,推动业务系统改造。

    2020-05-14
    1
  • weiyunhao
    郭老师,您好。df、di对应的是每天分区的数据是全量的和每天分区的数据是增量的。那么比如说1d代表是最近一天的数据,是增量还是全量呢?

    作者回复: 这个是每日的意思,属于增量数据。

    2020-05-14
    1
  • summer
    感觉这个问题就看你的波动率对比的基准值是什么啦,用一些统计的方法同环比结合

    作者回复: 你好,其实问题的关键就在于环比和同比没有什么参考性,因为今天和昨天的数据相差的实在是太多了。

    其实有的同学,提出用AI的方式,来让机器训练,预测。其实基于AIops做预测,当然是一条可以探索的路。另外,其实可以横向做多个表的对比,比如相关表数据量的增长幅度来加一下佐证。

    感谢你的阅读~

    2020-04-27
  • XiangJiawei
    我提到数据完整性可以通过数据记录的波动率来监控,如果超过 20% 的波动,应该被视为异常。但是你有没有想过,这种也存在误判的情况,尤其是在双十一大促期间,大概率数据稽核规则都是异常的,此时你又该怎么办?
    --考虑把历史的波动率的数据进行统计,通过机器学习等方式进行训练,提前预测双十一等情况下波动率的变化,把预测值与实际值进行对比分析。

    作者回复: 你好,你说的是一个可行的探索方向。

    感谢你的阅读~

    2020-04-26
  • Olivia_饶
    受益很多,有几个问题想请教:
    1.谁可以配置数据质量规则?如果所有人都能配置强弱阻塞规则,那么是不是会导致下游任务会有问题,从这个角度是不是数据表管理员可以配置数据质量规则,那么接着第二个问题:
    2.打通全链路数据质量监控,如果只能数据表管理员配置规则,但是他可能不是所有上游表的数据表管理员,这样怎么才能做到全链路数据质量监控?
    3.关于数据质量的管理,当出现数据质量问题后,数据质量问题怎么管,怎么解决,需要什么角色参与?如何形成闭环?有没有更详细的关于数据质量管理办法的介绍?比如从数据质量规则配置,制定打分体系,再到出现数据质量问题如何解决闭环的一整套管理办法?
    谢谢您的时间~

    作者回复: 你好
    1. 一般是表的负责人,也就是这表的产出任务的负责人添加稽核校验规则,如果负责人认为,数据有问题,需要终止任务,那下游任务即使再运行,也没用,因为依赖的数据已经有问题了。
    2. 这个每个人负责管理好自己的表,我们对质量的打分,是具体到每一个表的,如果是上游的输入表导致你的问题,那由上游表的人承担责任。
    3. 我们会对每个表的数据质量进行打分,打分的规则是根据稽核监控通过率来衡量的。当然,事故也会进行回溯,确认责任人,参与者往往是涉及表的开发,主题域的负责人,数据负责人。评审的主要目的,就是要完善稽核监控,让犯过的错误不再犯。

    感谢你的提问~

    2020-04-25
  • lcy362
    这几条稽核规则都是建立在一定的前提条件下的吧,比如和其他字段存在逻辑上的关联。但是对于一项非常独立的数据,有没有办法凭空建立起来一些规则呢?

    作者回复: 你好,稽核规则,可以有一些基本的规则是必须要添加的,比如主键唯一性的规则,表字段波动率的。其他的要根据业务来添加~

    感谢你的阅读~

    2020-04-24
  • 叫我小名
    有这样一个场景,上游业务系统变更(表结构变更等),怎么自动通知到数据人员这边

    作者回复: 你好,我来介绍一下我们这边的方案。

    你说的这是一个很典型的协作问题导致的数据质量问题,而且在一般的数据团队中还很常见。

    我们所有数据库的变更都是经过工单系统提交,由DBA审核后,自动执行的。我们在工单系统中增加了一个环节,就是如果涉及到表结构变更,会根据数据血缘,找到它影响到数据中台原始数据的表的负责人,并在负责人确认以后,才能继续执行下去,这样就保证了业务系统数据库变更能够通知到数据负责人了。

    这里,依赖全链路数据血缘,这里不仅仅是数据中台内的大数据加工的血缘,还要包括数据导入和导出任务的血缘,所以你才能建立业务系统源数据库源表到数据中台某张hive表的血缘关系。这个可以通过数据传输中心中,把血缘关系传递给元数据中心实现。

    感谢你的阅读~

    2020-04-23
  • Geek_f071bc
    老师 ,基于稽核规则,计算表级别的质量分数?能举个例子吗,这个质量分数怎么算?

    作者回复: 你好,每个有稽核规则的表,会计算质量分数。质量分数的计算主要是结合规则是否成功,规则的数量,规则是强规则还是弱规则。比如我们约定,强规则失败一次扣4分,弱规则失败一个扣2分,然后我们就可以计算某一天的某个表的质量分。

    你可能会有疑问,那加的规则越多,不是风险就越大了么? 确实会有这样的问题,但是规则的完备性不是由数据开发单方面决定的,是经过由数据架构师,域负责人组成的评审小组确定的,所以会确保每个表的稽核规则尽可能的完备,另外事故回溯也会完善稽核规则。

    感谢你的阅读,期待与你再次相遇~

    2020-04-19
  • 刘明
    数据中台之后,稽核监控应当是比较重要的问题了。但是在任务紧的情况下,这些质量方面的投入往往又会被忽视

    作者回复: 你好,要把数据质量稽核监控,纳入到数据研发的标准流程中,不能因为时间紧张,就忽视了,这样导致交付后会出现更大的问题。我在第12讲流程协作与规范中,会讲到数据研发的标准化流程,期望对你有所帮助。感谢你的阅读~期待与你再次相遇~

    2020-04-18
  • volcano
    完整性规则中
    如何确定业务库数据到ODS数据是不缺失的呢?有没有具体的稽核方案
    业务库是不会允许select count()这种需要大量扫表的行为

    作者回复: ODS 层的数据缺失,可以通过在数据传输工具中做校验来完成,读取了多少行记录,这个在数据传输工具中是可以知道的。

    感谢你的阅读~期待与你再次相遇~

    2020-04-17
收起评论
21
返回
顶部