如何识别和分类数据异常

在我们进入根本原因分析最佳实践之前,了解数据和管道中断的方式很重要。数据在这方面很有创意,这也是单元测试数据不足以检测大多数事件的原因之一。

虽然几乎有无数种方法或根本原因可以解释为什么“这些数字看起来不正确”,但好消息是大多数都可以分为四种类型的异常。

1. 新鲜度:数据新鲜度异常(有时称为及时性)是指数据没有在应该更新的时候更新。这通常由业务需求决定。高管可能每个季度都需要客户流失数据,营销人员可能每天早上 8:00 需要新的广告数据,或者流媒体网站上的机器学习驱动的推荐引擎可能需要近乎实时的数据。

2. 分布:分布异常是指您的数据值超出可接受的范围。在某些情况下,它是可以接受的异常值,例如在会议期间访问您网站的访问者激增,或者它是无稽之谈的时候,例如报告从纽约到洛杉矶的货物在几秒钟内发生。无论哪种方式,这都表明您应该深入研究。

3. 卷:卷异常是指数据过多或过少,表明数据源的健康状况可能存在问题。如果2亿行突然变成500万行,你应该知道。

4. 架构:架构异常发生在数据组织发生变化时。它可以像重命名、添加列或将字段类型从流更改为数字一样简单。当这些变化出乎意料(而且经常发生)时,它们会破坏下游流程。

数据团队了解这些异常类别非常重要,这样他们才能快速评估问题、标记问题并使用添加词汇进行交流。

对异常进行分类的另一个原因是数据异常类型有时可以作为问题所在的线索 (从而加快解决时间)。对于那些在特定平台上有经验的数据工程师来说尤其如此,他们身上还带着过去事件的伤疤。

例如,数据新鲜度异常的发生方式有很多种,但是当您看到这种情况时,您应该做的第一件事就是检查您的 Airflow DAG以查看作业是否失败。一旦数据消费者通过电子邮件发送了关于数据质量的令人讨厌的注释,就可以手动完成这些检查。不过,更好的方法是实施自动化数据监控,让您的团队第一个知道。

我们敢在破碎仪表板的阴暗墓地里唱“做好准备吗?”

主动数据监控不仅可以保持数据信任并加快检测时间,而且还可以加快解决问题的时间。

尽管如此,还是有更快的认知跳跃和对因果关系的直觉理解——或者最近在导致问题的环境中发生了什么变化。

评估影响和分类

你还记得那些土狼追着走鹃匆匆忙忙低头一看,发现脚下没有地的时候吗?他行动迅速,但效率不高,结果一落千丈,像卡通人物一样死去。

异常解决方法相同。数据团队花费如此多时间的原因之一是他们发现自己以同样的努力追逐每一个异常,却不知道何时或是否会从他们下面掉下来。

换句话说,他们不知道异常的影响是否与响应成正比。例如,如果仪表板在 4 小时内未更新,这是一个问题吗?有时是,有时不是。

避免 SPLAT 的一种方法是确定您最重要的数据资产,并与业务利益相关者合作创建数据 SLA。与消费者合作整理他们的期望和用例,为有效的事件分类提供了必要的背景。

挑战在于数据资产不断增加,数据消费模式千变万化。自动化数据沿袭可以帮助团队在不断变化的环境中有效地识别他们的关键表。

主动跨团队沟通

沟通对于根本原因分析和异常解决至关重要。第一步是确保正确的数据工程师有正确的警报。

就像 Jack Skelington 在万圣节比在圣诞节表现得更好一样,数据团队的成员将更有效地解决他们自己领域或专业领域内的异常情况。路由警报和分配任务对于创建所有权和问责制同时避免倦怠至关重要。

为什么会倦怠?好吧,团队可能很想指派他们最有才华的工程师去帮助扑灭他们可能点燃的火灾,虽然紧急,但这项任务也可能很乏味。

作为 Red Ventures 的(数据)产品管理总监,Brandon Beidel 表示,不良数据可能“……引发工程师 2 到 3 小时的远征,以追查问题的根源。不幸的是,最擅长发现这些问题的工程师随后被这些类型的问题淹没了。我们需要找到一种方法,摆脱这种享乐主义的跑步机和无休止的时间循环,从有生产力的人那里夺走。”

第二步是通知您的数据消费者存在问题,这样他们就不会对不良数据采取行动或传播不良数据。我们认识的一位数据工程负责人描述了一个表格用于执行报告的情况。

他们发现了一个数量异常,并迅速通过电子邮件发送给他们的矩阵合作伙伴或业务利益相关者,他们拥有该报告只是说,“我们现在有一个问题,但我们正在努力解决。请先不要发送每日报告。”

业务利益相关者对他们的主动性非常赞赏。在那一刻,矩阵合作伙伴知道数据工程团队得到了支持。突然之间,数据团队从解决问题转变为提供服务。

最后,重要的是不仅在数据工程团队内部进行沟通,而且在可能是问题根源的其他团队之间进行沟通也很重要。

例如,该架构更改是一次性异常,还是由于软件工程团队推出的新功能而改变了您正在摄取的产品遥测数据的输出?您的 IT 团队可能知道。

确定上游依赖

一旦确定了异常类型并评估了影响,数据团队就需要确定受影响最大的“上游”表。换句话说,不良数据首先从哪里进入您的环境?

这很重要,主要有两个原因。首先是上游表将为根本原因分析提供关键上下文。 如果异常是最上游的表之一,则可能是数据源的系统问题。如果问题起源于靠近数据消费者的远下游,则罪魁祸首可能是代码问题或 dbt 模型。

第二个是,如果你不……好吧,在它的根源上,你就无法解决根本原因。 否则,无论您将正确的数据回填到表中的频率如何,错误的数据都将继续从其来源处级联。

自动化的数据沿袭可以帮助团队避免通过 SQL 查询进行梳理以在无尽的迷宫中手动跟踪和重新跟踪表依赖关系以找到异常起源点的卡通过程。如果您手动执行此操作,您会发现“您应该在阿尔伯克基左转”。

分析引入异常的三个基础架构层

每种类型的异常都有几乎无限数量的根本原因,但它们都源于数据基础架构三层的问题。

了解这些层以及它们如何产生数据异常可以为您的事件解决过程提供结构。

  • 系统根本原因:当客户在提取、加载和转换过程中应用于数据的系统或工具引入错误时,会发现系统或操作问题。例如,Airflow 检查运行时间过长,导致数据新鲜度异常。另一个示例可能是依赖于访问 Snowflake 中特定模式的作业,但它没有访问该模式的正确权限。
  • 代码根本原因:第二种类型的数据事件根本原因与代码相关。例如,您的 SQL 或工程代码有什么问题吗?不正确的 JOIN 语句可能会导致不需要的或未过滤的行?或者它是一个 dbt 模型,不小心添加了一个非常限制性的 WHERE 子句,导致输出数据行数减少,从而触发卷异常?如果您能找到在引入异常的大约时间附近修改的查询或 dbt 模型,则这是一个很有希望的迹象,表明您已经找到了根本原因。可以通过整个堆栈的数据监控和日志分析来加快此过程

如何使数据异常解决不那么卡通化相关推荐

  1. iOS CMPedometer 获取计步数据异常解决办法

    使用 if ([CMPedometer isStepCountingAvailable]&& [CMPedometer isDistanceAvailable]) {if (!_Ped ...

  2. Nginx缓存问题导致的数据异常解决

    Nignx这个不作过多介绍,没听过Nginx的,下面的内容请自行略过. 项目场景: 在项目中有的时候为了减少服务间的通讯次数,我们会启用Nginx来作为第一层的缓存,以降低服务端的一些压力(譬如重复刷 ...

  3. RXTXcomm.jar 读取串口数据时报 Underlying input stream returned zero bytes 异常解决方法

    RXTXcomm.jar 读取串口数据时报 Underlying input stream returned zero bytes 异常解决方法 一.示例程序 1.依赖 2.示例代码 3.测试读取文件 ...

  4. 数据恢复软件使用经验-支持U盘,手机SD卡,硬盘数据,解决图片恢复后打不开的问题

    数据恢复软件使用经验-支持U盘,手机SD卡,硬盘数据,解决图片恢复后打不开的问题. 用过很多数据恢复软件,最早EasyRecovery pro,恢复过U盘,手机SD卡,硬盘数据.但现在下载不了最新版, ...

  5. hibernate先删除数据,紧接着执行插入时的异常解决之道——中间不能调用flush()、clear()等方法...

    hibernate先删除数据,紧接着执行插入时的异常解决之道--中间不能调用flush().clear()等方法 项目中包含这样一个寻常的业务:为某一个用户指定用户群.一个用户可以被分配到多个用户群中 ...

  6. Storm 消费Kafka数据及相关异常解决

    Storm 消费Kafka数据及相关异常解决 问题 KafkaTopoDemo类 bolt类 问题 storm报错:Exception in thread "main" java. ...

  7. 微信的行程卡服务器异常,行程卡打不开服务器崩了解决方法 行程卡短信查询步教程...

    今天滚天游戏网小编为大家带来行程卡打不开服务器崩了解决方法 行程卡短信查询步教程,希望能帮助到大家. 部分地区的健康码程序也无法打开,比如山东电子健康码.信息提示,由于当前访问人数过多,小程序可能会出 ...

  8. activeMQ高并发发送消息异常解决方法

    高并发发送消息异常解决方法: 现象:使用10个线程每100ms发送一条消息,大约3000多条后,出现异常,所有线程停 止: javax.jms.JMSException:Could not conne ...

  9. 鸿蒙系统卡顿解决方法,鸿蒙比安卓性能提升60%,还解决了安卓卡顿的问题,谷歌压力山大...

    鸿蒙比安卓性能提升60%,还解决了安卓卡顿的问题,谷歌压力山大 手机是大家生活中的必备设备,并且大家对于手机的了解程度可以说是很深刻了,知道一部手机想要使用的时间久的关键就是处理器和内存.内存小的手机 ...

最新文章

  1. iOS transform解决连续多次旋转缩放,实现图片旋转缩放效果
  2. 专门用来显示大量数据的视图:AdapterView(1)
  3. java rmi jrmp_关于Java 中 RMI、JNDI、LDAP、JRMP、JMX、JMS那些事儿(上)看后的一些总结-1...
  4. 传128GB版iPad4售价为799/929美元
  5. 使用docker搭建wordpress网站
  6. 升级sublime text4后激活及问题
  7. C语言之局部变量全局变量变量存储方式
  8. vim与外部文件的粘帖复制
  9. zabbix items复制
  10. python编程是啥-学了Python编程之后,同是新手的他们做了什么?
  11. linux交叉编译环境变量设置,arm-linux-gcc安装 和 环境变量设置
  12. 单片机 STM32 HAL 闪存 AT24C02
  13. python培训学堂怎么样_如何评价开智学堂开设的课程?
  14. 蒙特卡罗(Monte Carlo) 模拟
  15. word文档可以压缩大小吗,详细压缩步骤
  16. 黑龙江大学计算机专业考研难吗,黑龙江大学考研难吗
  17. html文档在word打开是乱码怎么解决,word打开是乱码的解决方法
  18. 数字战疫|央视聚焦闵行,有信云助力上海数千家企业复工复产
  19. React打包出现:The project was built assuming it is hosted at ./.
  20. Java后端面试必问:四十八道面试题及答案最新整理(速看速藏)

热门文章

  1. php 合并多个ppt,怎样合并两个ppt,怎么将两个ppt合并起来
  2. APP地推盒子的使用说明书
  3. 脚本开发教程分享: 用按键精灵编写能俘获女神的弹出窗口命令
  4. cisco认证考试信息网站
  5. 台式电脑怎么找不到计算机在哪,台式电脑没有声音怎么办
  6. Matlab cell保存为.csv格式
  7. 云服务器的内网IP和公网IP应该怎么理解?有什么用?
  8. 【Linux】循序渐进学运维系列文章前言
  9. Valgrind 检测linux上c++内存泄露
  10. Qt做的俄罗斯方块游戏