ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

数据治理质量提升实战:从数据标准到清洗机制的完整指南

数据治理质量提升实战:从数据标准到清洗机制的完整指南 数据治理这件事我太有发言权了。之前带团队扎进一个跨系统数据整合项目每天一打开数据质量报告就是几十条告警供应商主数据重复了上百条销售订单的金额字段有人填万、有人填元月底对账的时候财务部门直接把数据退回来——原话是“这数据我都不敢用”。那一刻你就会明白所谓大数据量大只是门槛数据质量不过关平台再先进、算法再花哨全白搭。所以今天想认真聊一聊数据治理里的质量提升问题。这不是科普文是实操经验帖适合正在做数据平台建设、数据仓库、数据分析项目的朋友以及那些被脏数据、烂数据折腾到崩溃的数据工程师、数据分析师和数据产品经理。我会把整个质量提升的思路、步骤、工具选型、踩坑清单都拆开讲争取让你们照着就能用。数据治理到底是什么说白了它和收拾屋子是一个逻辑你家东西再多如果堆得乱七八糟找啥啥找不到住着也不会舒服。数据治理就是把分布在各个业务系统里的数据进行标准化的分类、清洗、整合、管理让数据从“能用”变成“好用”。而质量提升是这件事的核心价值——数据治理做得怎么样最后都要落到“数据质量是否提升”这个指标上。1. 数据治理质量提升的整体设计与思路拆解先给大家打个底数据质量提升不是先买工具再定规则更不是让开发团队闷头写清洗脚本。真正有效的路径是“定标准—找问题—做清洗—建机制”四步走。下面把每一步背后逻辑讲透。1.1 为什么数据治理不等同于数据清洗很多团队一提到数据治理第一反应就是写SQL把空的、错的、重复的字段处理掉。这种认知会吃大亏。数据清洗是数据处理的一个环节而数据治理是覆盖组织、制度、流程、技术、数据的系统性工程。我举个例子。某电商平台发现订单表中的“收货地址”字段大量填写“北京市海淀区”但“省”字段却是空值。写脚本的话可以根据直辖市规则把“北京”回填到省字段几十分钟就搞定。但你有没有想过为什么没有人阻止这个问题持续发生是因为订单系统前端地址选择器没有做触发校验还是历史数据存量问题导致新数据从源头就是错的如果不从源头去管清洗做得再好明天还会有新的脏数据产生。数据治理的核心价值在于同时解决存量问题和增量问题。质量提升的秘密也就在“源头控制存量治理”双轮驱动。我从第一线观察到一个团队数据治理项目能不能成功往往在启动阶段就决定了。拿到一批脏数据不要急着清洗先回答三件事数据最终要给谁用用在哪里哪些数据是关键数据通常占全部数据的20%以下当前数据差到哪个程度、哪个环节埋的雷最多这三件事回答了你才知道治理的优先级和范围。否则就是胡子眉毛一把抓干了一个月管理者问你“质量提升在哪”你只能拿出几十页PPT告诉他“我们把101个字段的空值率都降到了5%以下”但业务方还是觉得自己要的数据不准、不全、不及时。1.2 数据质量提升的五个维度和指标设计理清楚了治理和清洗的关系接下来要回答另一个问题质量好和不好怎么判断不能靠感觉要用维度定义标准。行业里最主流做法是把数据质量拆成五个维度完整性字段有没有缺失比如身份证号为空、姓名为NULL。准确性数据与真实情况是否一致比如订单金额是不是正确商品重量有没有写错。一致性相同数据在不同系统、不同表中是否保持统一比如CRM里客户电话和客服系统里客户电话是否一致。及时性数据是否能按约定时间生成、流转、可用比如日报当天能否按时产出。唯一性业务实体是否有重复比如同一个客户是不是被录成了两条。每个维度都要转成可量化指标否则质量永远是玄学。比如完整性可以用“非空率非空记录数/总记录数”来衡量唯一性可以用“重复率(总记录数-去重记录数)/总记录数”来计算。我当时做治理方案时给每个维度都定了基线值例如“核心客户表唯一性须达到99.99%”低于基线就触发告警和整改流程。这里建议大家不要一开始对所有字段都用同一套指标。核心字段、核心表要有硬性红线边缘数据可以给缓冲空间。毕竟质量治理是要成本和产出的把精力耗在低价值字段上项目整体收益会打折扣。1.3 质量模型设计从单表规则到全局评分质量提升到中后期你会发现单看某张表的非空率、重复率不能反映数据资产整体水平。我建议你们建立一套“数据质量评分模型”让管理层随时看到一组数字而不是几十张报表。单表质量评分怎么算简化公式如下质量得分Σ(字段权重×字段质量得分)字段质量得分是把上面五个维度的指标结果按百分制换算后加权汇总。字段权重可以按业务重要程度来定比如订单中心表的“订单金额”比“订单备注”权重高出几倍。整个主题域比如“供应链域”的得分则是域下各核心表的得分按表的数据量、被引用频次再加权汇总。做到这一层你基本上就建立起一个可量化、可追踪的数据质量仪表盘。我还尝试过把质量评分接入数据资产目录每张数据表展示一个“健康分”消费者数据分析师、算法工程师选择数据时优先挑健康分高的。这样数据质量提升就不只是治理团队的事而是变成一种内部市场机制倒逼源头系统改善数据。这个玩法效果很好推荐有条件的朋友直接照着做。2. 数据治理质量提升的核心环节与实操要点思路清晰了接下来的问题就是怎么干活。实操部分我会讲数据标准、元数据管理、主数据规范这三个最容易被忽视又最要命的部分。2.1 数据标准先行把“方言”统一成“普通话”数据质量差的最根本原因是各业务系统各说各话。同一个“买家”A系统叫customer_idB系统叫buyer_noC系统干脆叫“用户识别码”。同一个“下单时间”有人存的是下单时刻、有人存的是支付完成时刻时间格式还有yyyy-MM-dd、yyyy/MM/dd、时间戳三种。数据标准就是干这个的给数据起统一的名字、统一的定义、统一的格式、统一的取值规则。类比来说它就是数据世界的“普通话标准”。做标准时建议从这几类入手标识符标准主键编码规则、ID类型、生成方式。基础属性标准名称、描述、单位、精度、类型、长度、默认值。值域标准枚举值的取值范围和业务含义比如订单状态只有“未支付、已支付、已发货、已完成、已取消”五种。数据交换标准接口传参、文件导入导出的格式和协议。注意做标准不能关起门来拍脑袋。一定要邀请业务方和源头系统负责人一起评审特别是值域标准业务口径变了你这边没跟上标准就成了空中楼阁。我们遇到过客户把订单状态从“已完成”改成“完成”就导致下游报表直接算错的情况教训很深。2.2 元数据管理数据治理的“作战地图”数据标准定义了目标态元数据管理则让你看清现状。元数据简单说就是“关于数据的数据”——这张表谁创建的、从哪个系统来的、有哪些字段、每个字段什么含义、谁在消费它、最近什么时候更新过。技术上元数据分成技术元数据表结构、字段类型、ETL依赖、业务元数据业务定义、负责人、使用方、管理元数据权限、密级、生命周期。做数据治理如果不先理清元数据就像打仗没有作战地图不知道连队在哪也不知道敌方阵地布局。实操上我推荐按这三步走盘点存量数据资产把各系统的库表字段信息收集到元数据仓库。建立业务词汇表business glossary统一各部门对数据的叫法。做字段级数据血缘分析搞清楚每一列数据从产生、加工到消费的完整链路。血缘分析尤其重要。之前排查过一个问题某张报表的数据环比波动超过50%业务方质疑数据不准。我们顺着血缘链路查下去发现中间层有一个join条件写错导致数据膨胀问题源头在一个数据开发一个月前加的新任务里。没有血缘图谱这种问题要排查好几个小时有了血缘就是沿着地图几分钟定位到节点。2.3 主数据治理抓住质量提升的“牛鼻子”主数据Master Data指的是企业核心业务实体的基础数据比如客户、供应商、物料、人员、组织机构。它被共享、被重复使用质量好坏影响范围极广。供应商重复、客户归属混乱、物料编码一物多码都会导致销售分析、采购分析、财务核算全面失真。主数据治理有个核心技巧先定“黄金记录”Golden Record。不同系统里同一个客户有不同叫法、不同联系方式通过规则引擎做相似度匹配和归并挑出一条最完整、最新鲜的记录作为黄金记录其他记录在下游应用中统一替换引用。规则引擎怎么做通常用确定性规则比如营业执照号完全一致概率性规则比如名称相似度90%且地址相似度80%就算同一家。相似度算法可以用编辑距离Levenshtein Distance、Jaccard相似系数等。我在项目里实测中文企业名称用编辑距离分词后余弦相似度组合匹配效果比较靠谱。还需要特别强调主数据治理不适合像普通表一样可以“先清洗后归档”它必须配套一个长期的维护流程。一旦黄金记录确认就要回写源头系统否则下次业务数据流进来又会产生新的重复。这里的经验和教训是主数据治理一定要让源头系统共同参战不能靠数仓单方面清洗否则永远是打地鼠打完一只又冒出一只。3. 实操过程与核心环节实现下面进入落地篇。我会重点讲质量规则配置、质量检查工具、清洗策略这些实际操作细节这些都是可以直接拿回去用的。3.1 数据质量规则怎么设计与配置质量规则是执行检查的“法律条文”。用大白话说就是告诉工具“怎样算合格”。规则不是越多越好每一条规则到后期都是维护成本。我的习惯是“核心表重点配边缘字段简约配”。常用规则收集如下这些都是我在实际项目里验证过的高频规则非空校验核心字段如订单号、客户ID、金额不允许为空。格式校验手机号必须11位且以1开头身份证号18位且末位校验位合法日期必须满足yyyy-MM-dd。值域校验状态字段必须属于枚举集合性别只能是男、女、未知。范围校验折扣率0x1年龄0x120。重复校验主键唯一同业务实体的去重记录数不能超过阈值。逻辑校验订单创建日期支付日期发货日期库存扣减数量0。时效校验增量表数据时间与调度执行时间差不超过30分钟。规则配置建议用声明式配置而非硬编码。什么意思呢就是规则写在配置文件、数据库表或规则引擎里而不是直接在代码里写死。这样业务变了数据标准调整了你改配置就能生效不需要改代码重新发布。以SQL为例一条非空校验规则可以写成SELECT 订单金额为空 AS check_name, COUNT(*) AS violation_count FROM dwd_order_detail WHERE order_amount IS NULL OR order_amount ;配合调度框架每天跑一次结果写入质量规则执行表。每周汇总一次就能看到非空率的变化趋势。格式校验可以用正则表达式SELECT 手机号格式错误 AS check_name, COUNT(*) AS violation_count FROM dwd_customer_info WHERE mobile_phone NOT REGEXP ^1[3-9][0-9]{9}$;这里有个坑要提醒正则表达式在不同引擎里语法有差异比如Oracle和MySQL的REGEXP写法就不太一样迁移时要统一在逻辑层做兼容性测试。3.2 数据质量检查平台的搭建经验很多团队问要不要自研数据质量平台还是买商业工具。我的建议是刚起步别一上来就搞大而全的平台先用“调度脚本结果表简易看板”跑起来跑通流程后再评估自研或采购效果更好踩坑也更少。一个最小可落地的质量检查体系只需要三张表质量规则定义表rule_idrule_namerule_typetarget_tabletarget_fieldrule_configexec_sqlnotification_setting质量检查结果表check_idrule_idcheck_timetotal_countviolation_countpass_rateerror_message质量整改任务表issue_idcheck_idstatusownerplan_timeactual_timesolution_desc每次检查完把pass_rate和violation_count写进结果表攒够一个月的数据你就能画出质量趋势图。哪张表在恶化、哪条规则天天报警一目了然。如果团队规模大一点建议引入Apache Griffin或Great Expectations这类开源工具。Apache Griffin是美国曾广泛使用的开源数据质量工具支持基于Spark的大规模数据质量监控有规则引擎、趋势分析和告警功能。Great Expectations则更适合数据湖和数据管道场景它用python写期望Expectations可以直接嵌入你的数据管道中实现“数据测试”的概念。我个人的倾向是如果是偏数仓架构、Hive/Spark体系为主的Apache Griffin更容易落地如果你们的数据管道是Python生态为主的Great Expectations更灵活。两者的配置都值得花几天时间学习长期看回报很划算。3.3 存量数据清洗的优先级与通用技巧清洗存量数据最忌讳“眉毛胡子一把抓”。我给清洗工作排优先级的方法是“影响面”和“业务价值”双矩阵影响面广的被多个下游表引用的核心表、业务价值高的财务、风控、供应链方向先做影响面小且价值低的可以放到后面慢慢来没时间甚至可以不做。通用清洗技巧包括补全从关联表或第三方来源补充缺失字段。比如订单缺失区域码可以通过邮编反查。纠错基于规则或算法修正错误值。比如把“浙江省杭州市余杭区”修正为区划代码330110。去重先用精确匹配主键、唯一键再用近似匹配相似度阈值找到重复组然后按业务规则保留黄金记录。格式标准化统一手机号、身份证、金额、日期格式。异常值处理数值字段超合理范围比如订单金额等于0或负数先隔离到异常表交给业务确认后再处理。清洗的时候必须保留审计日志。哪条规则改了什么原始值是什么处理后的值是什么谁执行的运行了哪个脚本这些都必须留痕。因为不管是审计要求还是后续业务方提出“你为什么把我的字段改了”没有审计日志你会非常被动。处理逻辑最好写成可重跑的清洗脚本而不是手工改库。手工改库一时爽复盘火葬场。我之前遇到有人直接跑SQL把订单表的某个字段全改成大写结果那个字段其实存储的是“备注”大小写是有业务含义的直接酿成一次数据事故。4. 常见问题与排查技巧实录这部分是个人实战中积累的最真实素材。我按“症状—根因—解法”来列方便大家遇到问题时直接对号入座。4.1 典型问题速查表症状可能根因排查思路解决建议报表数据与业务系统对不上数据缺批/漏批或ETL链路上有过滤条件不一致从报表往回倒查调度日志、分层血缘、字段级join逻辑定位后再对“逻辑不一致”做修复客户信息重复率高企源头无唯一性约束或客户导入接口未做去重抽样看重复键和相似度特征判断是输入侧还是聚合侧问题源头改接口逻辑数仓侧用黄金规则归并某字段空值率突然飙升上游源系统新增了错误映射或接口字段语义改变看血缘中最近的ETL变更、源表近期schema变化回滚变更或重新映射数据及时性不达标上游任务延迟调度依赖配置错误检查任务DAG、运行日志、队列资源优化调度优先级增加重跑和告警机制同一实体不同表口径不一致数据标准未落地各团队各自定义拉通业务词汇表比对各表中的字段口径统一口径修改下游计算逻辑4.2 数据质量的“隐性杀手”口径不一致单看一张表数据是干净的。一旦把两张表join起来问题立刻暴露。比如A表统计“销售额”按订单创建时间B表统计“销售额”按支付成功时间两边统计结果差出一大截但都不是错数据——是“口径”不一致。解决口径不一致问题唯一牢固的办法是在数仓建设初期就引入“数据指标字典”。指标字典里每个指标要有明确的计算逻辑、统计维度、默认过滤条件。比如“本月新增客户数”要写清楚是按“注册时间”还是“首次下单时间”算是否排除测试账号。另一个实践做法是建立统一的“事实表核心计算层”把公共指标在数仓中间层计算好下游各应用一律引用中间层的计算结果不再各自从原始表计算。这样一来即使某个指标口径变动只需改中间层所有下游自动生效。听起来简单但很多团队懒得做最后每到月底数据组的同事就在公司群里被“围攻”。4.3 从“救火”到“防火”质量告警与持续运营数据质量问题做一次清洗不难难的是防止以后再出。我在多个项目里的体会是质量保障必须建设“持续监控—自动告警—整改闭环”的机制。告警不能只发给数据开发。告警分发也要分角色设计字段严重缺失要发给数据负责人和源头系统负责人指标异常波动要发给业务方和数据运维重跑失败只发给当值数据开发。告警发错人很快大家就把告警静默了再重要的质量问题也没人看。整改闭环要遵循“先止血、再诊断、后预防”的逻辑。“止血”是先保证业务方拿到的数据不要继续错“诊断”是定位根因“预防”是在源头加校验和规范。切忌一发现问题就直接跑清洗脚本改数据——表面上看数据对了但根因没除过几天同样问题还会卷土重来。4.4 数据质量问题溯源一个真实的排查案例有一次客户反馈某供应链报表中“在途库存”数值出现负数业务方很恼火。团队初步判断是上游采购入库数据有脏数据。顺着血缘从报表到明细到明细来源一直往下游追最终定位到采购系统的“入库单”状态字段在某个版本升级后出现了新的取值“CANCELLED”而数仓ETL代码只处理了旧的状态枚举导致这些单子没有被过滤算进在途库存时产生了负值。这个案例说明了三点第一血缘分析工具价值巨大几百张表的依赖关系十分钟就能找到源头第二源头系统升级、字段取值变化是数据质量事故的头号来源治理团队必须和源头系统负责人建立版本变更通知机制第三数据质量校验规则必须跟着业务变化迭代不能写一条规则就丢那儿不管。5. 持续做对数据治理组织的“三个锦囊”聊到这里技术层面的硬货挖得差不多了。最后再从组织、流程和工具三个维度做点建议这部分更多是“软实力”但恰恰决定项目成败。5.1 数据治理委员会不是摆设数据治理天生是跨部门协作的事。如果只靠数据部门单打独斗源头系统不配合、业务部门不响应治理工作大概率会中途熄火。强一点的做法是成立数据治理委员会由分管领导挂帅各业务部门和IT部门指定接口人定期例会讨论数据质量问题、评审数据标准变更、协调跨部门资源。例会不要开成汇报大会。最有效的形式是“现场过问题”——把最新的质量检查报告投在屏幕上一条条过这个字段为什么空值率又涨了这个指标的口径谁负责确认下次例会之前要给出什么结论问题列表运转起来质量提升就有了抓手。我做过一个数据治理项目的落地记录刚开始几个数据owner对质量基线设置非常抵触说“标准定这么高我们做不到”。后来靠委员会机制反复对齐把基线降低到目前可接受、未来逐步收紧的水平并把达成情况纳入季度考核大家才真正动起来。所以标准不能硬拍要博弈要妥协但要定好路线图和时间表。5.2 数据质量度量指标要“上墙”没有度量就没有管理。数据治理项目的KPI不要只用“清洗了多少条数据”而是要落到“核心数据资产质量评分提升到X分”“关键表非空率达到99.9%”“核心主数据重复率下降到0.1%以下”这类数字型目标。这些指标最好做到可视化“上墙”——挂在数据平台首页、数据资产目录首页让每个访问数据的人都看得到当前数据资产的质量水位。这个做法有两个好处第一给数据生产者压力知道自己的系统和表天天被人看着呢第二给数据消费者信心他看到一个质量分96的数据表自然敢放心用看到质量分只有50的引擎自然会慎重。5.3 工具选型的三个硬性要求关于工具选型有三个硬性要求不管选商业产品还是开源框架都要看第一是否支持自动化血缘解析第二是否支持自定义质量规则和规则编排第三是否提供开放的API便于对接告警、调度、数据资产平台。如果一个工具连血缘都要手工画可以直接放弃。商业产品和开源工具没有绝对好坏。我见过用开源工具内部二次开发做到非常好用的团队也见过花大价钱买了商业产品却闲置不用的企业。核心还是先把流程和管理机制想清楚再配工具。工具是放大器流程有问题放大器只会放大问题。我个人在实际操作中的几点体会写了这么多最后再分享几个个人体会。第一数据治理质量提升是持久战不要幻想几个月就能“治理完毕”。数据是活的业务是变的治理也是一直要做的事。与其憋大招不如小步快跑每个月解决10个重点质量问题一年下来就是120个积少成多质变自然发生。第二先解决“业务体感最强”的问题再谈技术指标。不用一上来就追求99.99%的完整性而是先问业务方最头疼的数据问题是什么。通常业务方最恼火的可能就那几个报表、几个字段把那些搞定了项目背书自然就来了。靠技术指标拿到的支持远不如靠业务口碑拿到的支持扎实。第三不要把数据质量问题全部归咎于开发。很多时候根子在业务流程、系统建设、管理规范上。数据团队如果只会说“源头系统要改”那问题永远解决不了。真正的高手会把问题拆解成技术问题、流程问题、管理问题三类分别推动这样才会真正见效。最后送大家一个实用小技巧新接一个数据治理项目时先别急着定平台、定工具。花两到三周时间认真做一次数据现状调研把核心系统的表结构、数据量、质量基线、血缘关系都盘清楚。这个阶段看起来“慢”但后面所有工作都会因为前期盘得清楚而提速。磨刀不误砍柴工这句话放在数据治理里再合适不过。
返回列表