数据质量监控的最佳实践

389 阅读11分钟

引言

       

    在当今数字化时代,数据已成为企业竞争力的重要组成部分。作为一种有价值的资源,它可以帮助企业了解市场趋势、客户需求和产品表现等关键信息。通过对数据进行分析和利用,企业可以更好地制定商业战略、优化产品和服务、提高效率和减少成本。

      除了数据收集和分析外,企业还需要进行数据质量监控,确保数据的准确性和及时性。数据质量监控帮助企业及时发现数据异常和问题,从而及时采取措施,避免损失和业务中断。

  • 通过实时监测和分析数据来获取有关业务信息,帮助企业及时发现问题并有效地解决,从而提高生产力和效率。

  • 通过收集大量数据来识别趋势和模式,并生成警报和数据报告,帮助企业了解其业务的健康状况。

      

        公司研发了数据质量监控平台-有度(UDO),初衷是由于项目反馈的问题很多都和数据有关,项目提出能否提供一个简单的工具,让他们能够通过一些规则来监控这些数据,早点发现早点解决。

       下面我们一起看看有度(UDO) 研发的过程:

 

 

陷入困境

        项目业务上线后,线上问题频繁,业务运维和技术各种焦头烂额:

  • 月初的奖励/积分没有计算。
  • 仓库操作商品出入库,总是提示商品不存在,明明就已经到货了。
  • 手动导入了促销券,用户使用券提示该券不符合使用规则。
  • 分销商的货已经确认收货了,为什么经销商的钱没有到账,是不是系统问题?"

        财务表示也很糟心:系统计算出来的金额和财务手动计算的金额不一致,还需要财务重新手动计算?

   

有些归类为数据问题:

  • 业务数据是迁移过来的,有些数据本来就带着历史的政策或者bug,导致部分数据在新系统水土不服。财务用老数据用新逻辑计算,就会有差异。
  • 工厂ERP系统推送商品消息滞后,货已经收到,但是仓库并没有同步商品信息,需要通知到技术手动处理。
  • 手工导入的数据,有些字段数据格式不正确。

有些归类为功能问题:

  • 定时任务未成功执行,导致数据没有成功计算,报表没有成功生成。
  • 订单发货后,推送发货消息给OMS系统失败,导致业务订单和OMS系统的订状态不一致。

有且归类为第三方问题:

  • 银行确权周期导致钱没有到账

 

破局之法

        有没有什么办法能够提前感知到这些问题,提前处理呢?

        有没有什么办法能够提前预防这些问题呢?  

       经过调研发现反馈的问题都是数据问题,就从数据入手,对线上数据进行监控。这个时候就需要有个工具或者监控平台,能够满足我们对生产,对待生产问题能够"重预防","早发现","快解决"。

       由于目标明确且需求急迫,刚好大数据组也有类似数据比对需求,于是合二为一,由CodeX(大数据组)团队开发数据质量平台。

  WPS图片(1).png

 

应对之道

 

       有度( UDO) 平台功能简单易操作,主要分为6个模块:数据库资源,项目管理,任务模板,调度任务,执行日志和用户管理,已提前内置多个不同的监控任务模板,通过这些模板可以解决不同的数据质量监控需求,调度任务执行后,自动触发企业微信机器人或者邮件来预警。

       下面我们通过几个实际的监控案例,试玩这个监控平台吧:

第一步:先维护基础数据

  • 创建项目

创建项目.png

       其中企微机器维护在项目里,配置后,预警会通过企微机器人通知到企业微信群中。

WebHook地址中的key值填入企微机器人输入框中

       企微机器人设置教程: open.work.weixin.qq.com/help2/pc/14…

        当然我们也可以不用企业微信机器人

  • 创建用户 , 并关联到项目

创建用户1.png  

创建用户2.png

  1. 用户可以维护该项目的所有监控任务,查看日志并创建新用户。
  2. 监控任务的告警会邮件发送给该项目的所有人员。
  3. 支持域帐号/非域帐号登录。
  • 数据源新增

       支持mysql, es, hive, clickhouse数据源

数据源1.png

       如果数据库的表有更新,可以刷新重新拉取数据库数据

数据源2.png

第二步:创建监控任务

       有度( UDO )提供多个监控类型,我们可以按照不同的业务需求来选择合适的监控类型

       监控需求: 由于经销商每个月月初会根据之前6个月的销售记录重新计算星级,星级会影响经销商的采购轮胎金额和奖励上限。如果星级没有计算,会导致集团和经销行造成金额的损失。

       监控预期:如果星级变动没有计算,需要及时告警。

       分析:星级计算是通过定时任务执行,所以该监控需求其实就是对定时任务的监控

       实现: 一般定时任务成功执行后,按照实际情况,数据库内的数据要么有新增,要么有更新。只要在这个定时任务规则下,有变动数据产生,就说明定时任务成功执行。监控类型可以使用数据及时性

  • 进入新增数据监控, 监控类型选择:数据及时性

  监控需求101.png

       选择数据库和对应的表后,设置过滤条件:按照时间判断,当前月的第一天开始,统计的数结果至少为1,否则定时任务执行失败。

监控需求102.png        注意:

  • 输入框类型要选择sql表达式,内容可以填入:date_add(curdate(),interval -day(curdate())+1 day)。
  • 告警接收人:选中项目中的人员,当触发告警时,企业微信机器人会@执行人员,可以多选。

 

  • 保存成功后,运行一下,看看结果。

监控需求103.png

 

       监控任务结果失败,应该触发预警机制 @指定人员

监控需求104.png

       下图为企业微信预警

监控需求105.png

       下图为邮件预警(邮件模板可以自己定制)

监控需求106.png

 

第三步:新增调度任务

  • 新增调度任务,执行时间设置为定时任务完成之后

监控需求107.png

  • 设置cron调度

监控需求108.png

  • 设置完成后查看下次监控开始的时间

监控需求109.png  

第四步:查看日志

  • 到点定时执行,进入日志管理页面,查看日志结果

监控需求111.png

  • 查看调度任务,下次执行自动为下个月

监控需求112.png

  以上是一个简单的监控场景示例。

 

复杂一点的如何做呢?

       来看下面一个监控需求

       监控需求 2 订单收货后,系统调用银行确权接口超时,导致订单确权在状态还在确权中,实际已经确权完成,导致的结果是钱已经到了商家账上,但是状态显示待入帐。

       监控预期: 由于银行接口超时不可控,如果订单确权失败,发出告警。

       分析: 订单状态完成后,会通知订单确权。所以如果订单状态完成,但是订单未确权完成,就说明有问题。

       实现: 项目底层服务是SAAS服务,订单信息在OMS库的Order表中,确权状态在业务库的order表中,可以将2 个表数据进行对比。可以用监控类型:数据同步

 

  • 创建监控任务(如果需要新的数据源或者新的项目,请参考上一个示例操作):

image.png        

  • 选择校验数据源

复杂场景1.png  

· 选择对比数据源

复杂场景2.png

 

       保存后执行看看结果(实际结果)

 

复杂场景3.png

 

 

分库分表可以监控么?

       当然也可以!

       如图是为了监控每小时ERP是否同步了轮胎数据给到系统,可以切换成sql语句来写。

分库分表01.png

 

灵活运用

       验证数据规则,在一定的时间范围内,不符合规范的数据最多为0,如果有,就告警。

分库分表02.png

 

升级比对

       数据一致性和数据同步,都只是在数据量上进行了监控。在实际工作中,往往有更为复杂的数据明细对比。数据一致性就是为了解决这方面的问题的。

 

        监控需求 3 :为方便统计每月的订单量与订单金额,项目专门做了一张每月订单统计表,想确保这张表的统计是正确的。

       分析: 每月订单统计表(dc_tenant_month),其中主要字段(order_month,order_month_count,order_month_amount),需要这张表的数据与订单表的数据明细一致。

       实现:使用数据一致性的规则,在处理的时候,会把相同维度字段的数据,来校验对比字段的值是否一致,从而实现数据明细对比。从原始订单表进行按月统计的数据,与每月订单统计表的数据进行了对比,我们就可以实现两张表数据一致性检验。

 

  • 选择监控类型-数据一致性

数据一致性01.png

  • 选择校验数据源,填写SQL,并增加维度字段和对比字段   数据一致性02.png   

  • 选择对比数据源:,并增加维度字段和对比字段

数据一致性03.png  

      还有很多小技巧,大家熟练了之后可以自行探索!

渐入佳境

      经过一段时间的使用,我们又迎来了新的挑战。有度( UDO)平台的初衷是希望能够通过监控生产环境的数据控制质量,提前感知和解决问题,所以一开始设计监控的结果只有2种:成功和失败。有的项目希望能够通过除了监控结果,还希望有对应的明细。或者按照一些规则生成报表数据。当这个需求交付到我们时,发现平台的功能基本满足需求。我们按照这个诉求,增加了一个类型-业务监控。

      监控示例:监控非正常业务挂起的发货单,超过1小时未成功推送下游系统的数据给到业务处理。

业务监控01.png  

      执行结果:

      企微监控结果

image.png

 

      邮件结果

业务监控03.png

 

      通过下载链接可以获取所有数据.

 

 

总结

      有度( UDO)平台已经在公司运行一年多了,有度,越来越多的项目主动要求使用数据监控平台对业务进行监控,在项目的整个生命周期,平台也作为一个质量控制的工具,起到重要的作用。由于平台操作简单,可以满足技术,测试,项目,产品等不同角色的使用需求,满足测试环境,生产环境的不同需求。至今,有的项目最多的业务监控数量达到50+,包含国内和国外的业务,当然在日常工作种

      售后团队评价:一键预警,多种预警规则,设置不同的比对数据规则,通知方式多样性等,极大方便通知运维及时的感知处理异常数据。

      产品团队评价:UDO平台极大缩短了以往监控需求的开发周期,并且支持根据业务场景和需求进行灵活配置,充分为系统和业务保驾护航。

技术文档

      UDO后端 github :github.com/GTechdigi/u…

      UDO前端 github:  github.com/GTechdigi/u…

      技术文档地址1: gtechdigi.github.io/2023/01/09/…

      技术文档地址2: juejin.cn/post/718656…

公司简介

      上海佳应科技有限公司 (Gtech Digital Co., Ltd.) ,是一家全球数字化技术服务商,主要面向零售、汽车、生产制造的品牌客户,提供“PaaS+SaaS”形式的产品与解决方案。

      自成立,Gtech佳应科技一直负责新加坡佳通集团零售电商、轮胎生产制造、汽车后市场等重要业务板块的数字化咨询、管理和转型工作,通过持续的技术研发与产品创新,推动集团内部组织管理、商业模式、运营模式和生产方式变革。

      目前,Gtech佳应科技已成功服务东南亚TOP零售集团、一站式汽车养护平台Speedwork和知名轮胎生产制造商,拥有丰富的行业理解与产品实践经验,以及国际化、标准化的项目交付和系统运维经验。现已成功孵化 “全渠道零售数字化”、“F2B2b分销渠道数字化平台”、“B2b汽服供应链+智慧门店SaaS”等解决方案类产品。

      我们也已经将产品应用领域进一步拓展到了,鞋服、家居、3C电子等细分行业,服务50+品牌、 200+家经销商、50000+门店数字化转型及运营管理升级,服务生态范围辐射印度尼西亚、马来西亚、泰国、越南等多个国家。