ARTICLE DETAIL

资讯详情

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

数据与非数据:数据工程中的边界判断与治理实践

数据与非数据:数据工程中的边界判断与治理实践 数据与非数据我在数据工程一线踩过的那些坑干了十多年数据相关的工作从最早做报表、写SQL到后来搭数据仓库、做数据治理再到现在带团队做数据平台我越来越觉得一个最基础的问题其实最难回答到底什么是数据什么不是数据很多人一听就笑了这不简单吗Excel表里的、数据库里的、日志系统里的那些不都是数据吗我一开始也是这么想的。但真到了实战里你会发现事情远没那么简单。有一次我们做一个用户画像项目业务方提了一堆需求说要“全量数据”。我们傻乎乎地真把所有的埋点日志、订单记录、客服聊天记录、App浏览行为全塞进了模型结果模型效果差得离谱训练时间暴增最后排查下来问题恰恰出在我们把太多“非数据”的东西当成了“数据”。这个教训让我花了很长时间去复盘。到底哪些东西算数据哪些东西只是长得像数据数据和非数据的边界在哪为什么区分它们这么重要这篇我就把我在实操中总结的经验完整分享一下。适合刚入行的数据分析师、数据工程师也适合那些正在搭建数据体系、但总觉得哪里不对劲的团队Leader。看完你会发现很多数据项目的失败不是技术不够而是从一开始就没想清楚这个问题。1. 数据与非数据先搞清楚我们到底在讨论什么1.1 数据的本质不是“记录”而是“可用于决策的符号”我跟很多做业务的朋友聊过他们觉得只要把发生的事情记下来就是数据了。这个理解我认为只说对了一半。记录本身只是“原始痕迹”它要成为真正的数据必须经过一个“可用化”的过程——能被特定场景下的决策所使用。举个例子。我们平台每天会产生几亿条用户点击日志每条日志长这样用户ID、时间戳、页面ID、点击坐标、设备型号、网络类型。你说这些是不是数据是也不是。对小公司来说如果它们没有任何分析团队、没有任何推荐算法这些日志就是一堆占据磁盘空间的字符纯纯的“非数据”。但对一个做个性化推荐的电商平台来说这些日志是最核心的数据资产。所以判断一条记录是不是数据关键不在于它的格式是否规整、能不能存进数据库而在于它是否参与了决策过程。这是我理解数据的第一个核心数据是“可用信息”与“决策场景”的交叉产物脱离了场景数据就退化为普通记录。我再用一个生活化的类比帮你感受。你在厨房里看到灶台上一撮白色粉末它就是一堆白色粉末。但如果今天你要做蛋糕这撮粉末是糖还是盐就直接决定了你能不能做出能吃的点心。粉末本身没有变变的是“它对你决策的意义”。数据就是这么回事同样的东西在一个场景里是数据在另一个场景里根本不算。1.2 非数据不是“没有数据”而是三种东西的合集理解了数据是什么我们再来看“非数据”这个概念。很多人觉得非数据就是“没有数据”或者“空值”这个理解太狭窄了。我实操总结下来非数据其实是三样东西的合集。第一种叫噪音。它是真实存在的、被记录下来的但对当前决策没有任何信息量的东西。比如用户点击时的设备传感器数据包括陀螺仪角度、加速度这些信息确实被记录了但如果你是在分析用户购买意愿它们大概率就是噪音。第二种叫上下文。上下文很有意思它本身不是一个具体的“字段”但它决定了你如何解释那些字段。比如你看到一条销售记录单品售价100元。但如果没有上下文告诉你“这是活动期间的价格”还是“日常价”你连这个数字该怎么用都拿不准。上下文描述的不是“世界本身的状态”而是“数据在世界中的位置”它是非数据但它反过来给数据赋予了意义。第三种叫缺失信息。这个最容易被忽略。我们手上的数据本质上都只是真实世界的采样采样就必然有盲区。比如我们只有用户在App内的行为数据但用户在线下门店做了什么、和客服打电话说了什么这些都没有被记录。这些“没有被记下来的东西”就是缺失信息它们是非数据的大头也是决策风险的主要来源。清楚了这三个分类之后你就会发现一个数据项目的核心工作其实不是“管理数据”而是“处理数据与非数据的边界”。1.3 数据和信息、知识、洞见不是一回事还有一层我需要强调一下很多人把“数据”和“信息”“知识”“洞见”混着用这会严重影响你对“非数据”的判断。我习惯用一条链来理解原始记录 → 数据 → 信息 → 知识 → 洞见。原始记录是一堆符号从里面提取出可计算的字段这叫数据数据通过加工变成有业务含义的信息比如“本季度华东区销售额下降12%”信息经过交叉验证形成可复用的规律这叫知识知识结合具体情境产生行动建议这才叫洞见。大多数数据团队的问题在于他们只做到了第一层和第二层却告诉老板他们有“数据驱动能力”。其实他们手里只有数据连信息都还没提炼干净更不要说洞见。这个误判直接导致了什么就是团队把大量精力花在“存储数据”上却几乎没有精力去做“从数据到信息”的加工更别提知识沉淀了。从非数据的角度来看这个链条里每一环的中间产物比如原始记录如果你没有能力处理它那它就是非数据。链条越长你离真正的数据价值越近但中间产生的中间产物也越多它们全都需要被区分和判断。2. 为什么要花力气区分数据与非数据2.1 不区分的话你的分析结果会骗人说实话很多人觉得“多存点数据总没错”这句话在成本可以忽略的前提下有一定道理但实际上它是有毒的。因为数据一旦超过一定量级数据噪音带来的干扰就不是线性的而是指数级的。我做过一个很典型的实验。当时我们给一个零售品牌做销量预测用了三组特征。第一组只用了历史销量数据第二组加了天气数据第三组再加了社交媒体情绪数据。你猜结果怎么着加了天气数据之后预测准确率确实提升了但再加社交情绪数据后准确率不升反降而且模型的不稳定性明显增加。测回去看才知道社交情绪数据本身噪音太大情绪识别模型本来就有20%的错误率这部分错误被当成“真实数据”输入到了预测模型中反而污染了我的预测信号。这就是典型的把“非数据”当数据用的惨案。数据科学家圈子里有句话叫“垃圾进垃圾出”但现实更微妙——不是垃圾进垃圾出而是“假数据进真垃圾出”。非数据伪装成数据混进系统里它甚至不给你一个明显的报错只会让模型的预测一点点偏离现实。2.2 存储和治理资源是有限的必须排优先级数据要存储、要备份、要安全管控、要保证质量每一样都是成本。很多团队数据量看着很大TB级别、PB级别但其中有相当一部分是从采集那一刻起就永远不会被访问的“僵尸数据”。我见过一个客户他们的数据平台上堆了三年多的原始CDN日志总共占了大概30TB的空间但三年里没有任何人和任何任务真正查询过这些日志。如果当初他们愿意花点时间区分数据和非数据这30TB完全可以不存或者只保留聚合后的摘要省下来的存储成本拿去升级计算资源它不香吗更关键的是数据治理是有隐性成本的。数据越多数据地图越复杂、数据质量监测越难做、权限管控越容易出漏洞。每一条多出来的“非数据”都在悄悄增加整个数据体系的管理负担。所以我在团队里推过一个原则**每一项数据进入数据平台之前必须回答三个问题——这个数据未来会不会被用到会在什么场景被用到如果现在不采集将来能不能补**回答不清楚的一律不接入。一开始业务方意见很大觉得我们太保守但跑了半年之后我们发现这样反而让数据平台的并发和稳定性都提升了大家查数也更快了因为你要找的东西不再淹没在海量垃圾里。2.3 从“占有数据”到“关注信号”的思维转变很多时候团队执着于“要有数据”其实是一种焦虑心理在作祟——怕错过、怕漏掉。但数据工作的本质不是占有而是释放信号。我经常打一个比方。你开车的时候眼睛看到的东西非常非常多路边的树、天空的云、对面车牌号、路面上的一只猫。这些全都被你的眼睛记录下来了但你的大脑真正处理的只有那些对“安全驾驶”有意义的信号前方路况、红绿灯、旁边车道的车距。那些被眼睛接收但没被大脑处理的东西对你来说就是非数据。如果你每一帧画面都要处理你根本开不了车早就撞了。数据平台也是这个道理。数据的价值不在于你存了多少而在于你从中提取了多少可用于行动的信息。一个存了10PB数据但只能出一个报表的平台还不如一个只存了1TB数据但能精准预测用户流失的平台。这个转变是数据团队从“基建思维”走向“业务思维”的关键一步。3. 实操如何在一堆东西里识别数据与非数据3.1 一个可复用的四步判断法理论讲完了我来给点干货。我在团队里推行了一套四步判断法用来评估“某个东西到底是不是数据”你可以直接拿回去用。第一步看它是否来自某个客观发生的事件。数据必须是现实世界某个事实的记录比如用户点击了按钮、订单支付成功、设备温度升高。如果你记录的东西无法对应到任何具体事件比如随手填的一个空格、默认值那它大概率不是数据。第二步看它是否具备明确的结构化潜力。结构化的意思不是说它必须存在数据库里而是说它能不能被拆成稳定的字段。比如一段客服对话记录虽然是非结构化文本但可以拆成“时间、客户ID、问题类型、情绪倾向、解决时长”那它有结构化潜力可以当数据用。反过来一张随手拍的模糊照片如果你无法从中提取任何稳定字段它就不算数据。第三步看它是否参与了具体决策。这是最重要的一步。问自己一个问题如果今天这个字段消失了会有什么决策做不了如果答案是什么都不影响那它就不是数据最多算“有价值的历史记录”。第四步看它是否有不可替代的增量价值。有些信息虽然能参与决策但它的价值完全可以用其他字段推导出来。比如你有用户的下单时间又有用户的收货地址那你基本上可以推算出用户的大致时区这种情况下单独的时区字段就不需要了。3.2 数据资产盘点实操案例一次真实的治理行动理论落地到实践最典型的就是数据资产盘点。我去年带过一个项目帮一家中型电商公司做数据治理第一步就是梳理他们到底有哪些“数据”。我们用了一个笨但有效的方式。先把所有数据源列出来——MySQL、Hive表、Kafka消息、Excel报表、第三方API返回结果全部登记。然后逐张表、逐字段地过标注每个字段是否满足前面说的四个条件。这个过程非常耗人力十几个核心表我们整整过了一周。我先说几个我们标注为“非数据”的例子你可能也会有共鸣。用户表的“备注”字段90%是空的剩下10%的内容五花八门从“VIP客户”到“要催一下”都有。这个字段无法结构化为稳定信息也不能支持任何决策我们在盘点时直接把它标记为“非数据”。订单表里的“渠道来源”字段很多订单的该字段是默认值“other”。因为过去的埋点不规范导致这个字段失去了区分渠道的价值等于每条订单都在说“我也不知道这个人从哪来的”。日志表里几十个维度的环境参数比如设备剩余电量、屏幕亮度、网络信号强度。这些信息对大多数业务决策没有任何增量价值全部标记为“非数据”。但我也遇到了反例。有一个字段“用户首次购买时间”一开始我看它觉得业务方肯定用得上结果业务方说我们都是从“最近一次购买时间”反推复购率的首次购买时间根本没用。然后我就发现一个很有意思的现象同一个字段在不同团队眼里是严格的数据和非数据之别。所以盘点的时候我坚持让业务方参与每个字段的评估而不是我们自己拍板。这个非常重要因为数据的价值本质上是业务判定的不是技术部门能自己说了算的。3.3 正确处理“非数据”九种处置手段盘点完真正的工作才开始。面对被标记为“非数据”的东西你不能简单地一删了之我总结了九种处置手段按推荐程度排序。不用最推荐的方式。永远不采集它从源头杜绝。降级将原来全量保存的数据只保留聚合值。比如每秒钟的点击量细粒度日志只保留每分钟汇总数。归档它不是数据但可能有历史追溯价值放到冷存储里面备而不用。脱敏有些字段虽然不使用但它关联了用户隐私必须脱敏处理才能保留。标记并不真正从表里删除打上“非数据”标记防止未来有人误用。重定义有些“非数据”是因为当前的业务环境变了但换个用法可能就成了数据。比如外卖平台的“配送小哥位置轨迹”如果只用于配送管理那它已经有用了但如果你拿来分析商圈人流就是新的数据价值。合并多个低信息量的字段合并成一个高信息量的字段减少表宽度。比如“页面点击X坐标”和“Y坐标”单独看意义不大合并转换成“用户点击热区”就有价值了。删除没有任何价值的、且无法重新利用的果断删掉。隔离因合规原因必须保留但禁止业务使用的数据放到独立隔离区。我们的盘点和治理实际执行下来处理结果大约是这样的一张表我贴出来给你参考数据类型占比约处置建议核心决策数据18%纳入主数据管理高可用保障一般业务数据32%保留用于常规分析和报表潜在价值数据22%存档定期复评低频参考数据15%归档到冷存储噪音/僵尸数据13%优先删除或隔离这个比例不是固定的每个行业不一样。但核心思想是一样的真正称得上“核心数据”的永远只占少数剩下的都是围绕它转的支持性数据或非数据。数据治理的利润空间往往就在于把那13%的僵尸数据清出去。4. 动态视角数据与非数据的边界一直在变化4.1 “昨天不是数据今天是数据”的三种情况前面讲了很多静态判断但现实世界是动态的。数据与非数据的边界不是一劳永逸的它会随着技术和业务的变化而移动。我总结下来常见的有三种“化非为数据”的路径。第一种是技术能力演进。过去很多信息因为无法被处理只能归入非数据。比如用户在人脸识别闸机前的模糊行为特征、环境中的语音数据过去很难提取稳定信息。但现在技术成熟了这些信息能被转化成有用的数据。我在一个智能办公项目里就靠分析会议室的使用频率、时长、参会人数帮行政团队优化了会议室分配方案省了不少成本。这些数据三年前根本没法用现在完全不一样。第二种是业务场景变化。公司新开了一条业务线或者管理层换了KPI原来不重要的字段一夜之间就成了核心数据。比如过去公司只关心销售额不关心口碑。后来他们要做一个“净推荐值NPS”看板那客服评价文本就突然变得至关重要了。所以数据资产盘点不能只做一次至少每半年要复评一次。第三种是算法模型升级。有些信息单独看没用但如果用新的分析模型和算法就能从中挖出信号。最典型的是图算法。过去用户之间的关注关系就是一堆没啥用的记录但当你引入图计算之后你可以基于follow关系做社区发现、做影响力传播分析非数据就变成了核心数据。4.2 反向运动数据如何变回非数据和数据升级相反的还有数据降级。真实世界里数据不会永远保值。我见过很多曾经花大力气采集的数据后来因为业务调整或者技术迭代变成了真正的“非数据”。最常见的例子是你积累了大量用户画像标签但推荐系统换成了大模型驱动的方案之后那些标签的重要性大幅下降。你不能说它们完全没用了但它们在决策中的权重已经很低有点像过期的地图看着还在但没人真按它导航了。还有一种反向运动是“信息过载导致的数据退化”。当一个字段的取值多到爆炸而且充满了各种例外和特例的时候这个字段的决策价值反而会下降。比如一个“商品类目”字段如果类目划分混乱同一个商品被不同运营人员挂了三四个不同的类目那这个字段虽然有几千个不同取值但它在模型里的表现还不如一个干净的二分类字段。我之前有一句话经常跟团队讲数据不是资产准确可用、与决策对齐的数据才是资产其它都是“数据化石”。化石有研究价值但你不能指望它直接给业务供能。4.3 给你的几个实用建议帮你动态管理边界动态管理边界我的经验是三条。第一建立一个“数据复评机制”。每季度针对已经被标记为“非数据”的字段重新过一遍看看有没有“化非为数据”的可能。反过来已经被标记为“核心数据”的字段也要检查一下是否有被内部业务实际使用过。半年都没人访问的核心字段就要考虑降级了。第二不要追求100%的数据全覆盖。我看到太多团队花大量精力去采集“可能有用的数据”结果真正到了要用的时候那批数据要么质量太差、要么格式对不上。与其这样不如把精力放在把20%的核心数据做到极致正确和极速可用上。第三把“数据与非数据”的判断下沉到一线。不要靠数据团队自己去做这个判断要让业务方在提数据需求的时候就明确给出“这个字段要解决什么决策”的答案。我在数据需求模板里加了一个必填项“该字段服务的具体决策场景是什么如果无法描述原则上不接入。”这个模板一推出数据接入量直接下降了40%但这40%本身就是该被挡在门外的“非数据”。5. 几个真实案例数据与非数据错位引发的“事故”5.1 风控模型被“非数据”带偏的惨痛教训这个案例是我朋友公司风控团队踩的坑非常有代表意义我拿来分享。他们做信贷风控模型接入的数据源非常多。其中有一个人行征信报告里的字段内容是“近6个月信用卡平均额度使用率”。这个字段看起来特别有价值对吧风控嘛信用卡利用率高可能说明这个用户缺钱风险高。但问题来了他们导入数据的时候没有注意到这个字段有两种取值逻辑一种是从征信报告PDF里OCR提取的另一种是从银行API直接获取的。OCR提取的有大量的识别错误把1看成7把空值识别成0。结果模型训练完之后上线没几天就出了大量误判。后来排查发现就是OCR识别错误的那部分数据混入了训练集模型学到了一个非常奇葩的规律“额度使用率为0的用户风险极高”。但真实的0额度使用率用户其实是那些几乎不用信用卡的优质客户。说白了这就是把“非数据”OCR错误结果误认为“数据”然后让模型做出了错误推断。这个案例的教训是什么来源不明、口径不一的数据在进入模型之前一定要做同源校验否则宁可把它们排除出模型特征集也不能直接拿来用。5.2 一个把“上下文”做成数据的成功尝试再看一个正面案例。一家做在线教育的公司曾经困惑于“用户为什么试听之后总不转化”。他们的数据仓库里有非常完整的用户行为数据注册时间、试听课程、点击路径、停留时长等等但就是找不到转化和行为的强相关关系。后来他们补了一个“上下文”信息——试听课程的时间段。这个信息本来不在他们的数据仓库里因为它是一个“非数据”描述课程安排的信息不直接与用户相关。但他们把“用户试听时间段”和“上课老师风格”交叉之后发现了一个被忽略的规律喜欢在晚上10点后试听的用户转化率比白天试听用户高出34%因为他们往往是在职提升的人群决策更果断价格敏感度更低。这个发现说明很多有价值的信息恰恰藏在“非数据”里——不是你可以直接当成字段存下来的东西而是需要当成背景、上下文去理解的部分。把上下文显式化成数据维度往往能打开一扇新的窗。5.3 我的日常避坑指南五个最容易被误判的“非数据”趁这个机会我把平时工作中最容易被误判为数据的五类东西整理出来供大家自查。默认值很多系统里默认值“0”、“unknown”都是代码没写对导致的兜底值。它们看起来是数据但实际上充满了信息噪音必须小心处理。异常值很多人一看到异常值就觉得是机会但实际上相当比例的异常值来源于程序bug、数据格式错误、人为误操作。不加校验地使用异常值轻则分析失真重则模型崩坏。计算字段有些字段是其他字段计算出来的中间结果比如“订单金额”可能是“单价×数量”算出来的。如果你同时保留“单价”“数量”“订单金额”三个字段并全部放入模型就会引入多重共线性问题。汇总字段它本身不是新信息只是信息的聚合形态。比如“月活用户数”就是每天活跃用户去重之后的聚合。在明细层和汇总层之间保持强一致性即可不需要把两层的字段都当成独立信息。临时标注业务方在数据上随手加的临时标注比如备注“这个客户很重要”没有结构化定义、没有统一规范这种信息看似有业务含义但在没有明确处理方案之前请把它当成非数据不要直接进分析流程。6. 数据治理体系里的“账本”如何记录和追踪非数据6.1 元数据与“非数据目录”的配合做数据治理的人都知道元数据metadata的重要性。但大多数团队只做了一半——他们对“数据”有元数据管理对“非数据”却没有任何追踪。我建议每个数据平台都应该有一个“非数据目录”专门记录那些被评估过、被判定为不进入核心数据体系的东西。这个非数据目录包含哪些字段我列一个我的实践模板非数据的原始名称、来源系统、判定时间、判定人、被判定的原因、处置方式保留/删除/归档、未来可复评的触发条件。有了这个目录好处非常多。第一它能避免重复劳动。很多数据被判定成非数据之后六个月后业务方又会提需求要它。如果我们有记录就能直接告诉他们这个之前评估过了当时的结论是什么如果可以我们重新评估一次。省得从头再盘一遍。第二它能帮助形成组织记忆。数据团队的人员流动率不低新人接手的时候如果没有非数据目录他很可能又走老路去接那些垃圾数据。有了目录新人在评估数据源的时候能快速知道哪些是雷区哪些是已经被验证无用的东西。第三它能作为数据团队专业性的证明。当老板问“我们为什么没有某个数据”的时候你不需要嘴硬而是可以拿出非数据目录向他解释这个数据我们之前评估过当时它的价值不明确且成本很高。现在我们重新评估的条件已经变化了可以考虑接入。这叫“有结论、有理由、可反驳”比拍脑袋强多了。6.2 非数据目录的维护节奏和责任人非数据目录不能建完就扔一边它需要维护。我在团队里把它当成一个轻量级的“活文档”由数据产品经理或数据治理专员负责每个月抽半天时间同步一次状态。具体维护动作有三个。第一把新增的非数据判定结果录入目录并写清楚结论。第二抽查旧的判定记录看看业务环境、数据条件有没有变化。第三把过期太久的非数据记录做一次“再确认”如果确定没有任何演进可能就标记为“关闭”不再追踪。我见过一些公司把这事搞得很重非要建一套专门的系统来管理非数据目录其实没必要。一个共享的在线表格就够了关键是记录的信息要结构化、判断依据要可追溯。把精力花在判断质量上而不是花在管理系统上这是我反复强调的原则。6.3 一个容易被忽视的问题非数据目录本身也会变成“非数据”最后提醒一个反直觉的点非数据目录这个记录本身如果你不持续维护、不参与任何决策它也会退化成一堆非数据。很多公司做了数据资产盘点花了一周时间产出了一张大表然后就没有然后了。那张大表就成了存储在共享网盘里的一份“僵尸文档”。所以一切数据项目的终点不是“产出一份文档”而是“推动一系列改变”。数据与非数据的区分也是一样它的目标不是给你一份分类清单而是帮你持续优化数据平台里信息的密度和纯度。每一次复评、每一次数据接入与下线都应该是这个区分框架在起作用。7. 再多聊几句我的实际体会前几天我复盘自己这几年做数据工作的心得发现最值钱的认知恰恰不是那些算法、框架、工具而是“少即是多”的克制感。数据工作最大的幻觉就是觉得“只要我有更多数据问题就能解决”。但现实恰恰相反更多的数据往往意味着更多的噪音、更多的维护成本、更多的信息冗余。我个人在实际工作中的体会是判断数据与非数据最大的难点从来不是技术而是你能不能放弃“占有”的执念。团队里总有人说这个数据先存着吧万一以后能用呢。但这句话听起来合理实际上它本质上是把决策推向了“未来的自己”——而未来的自己往往会被海量的历史包袱拖着走根本没机会去挖掘那些真正有价值的信号。所以现在我再看到新数据需求的时候第一反应不是“怎么接”而是“需不需要接”。我不太想再做那种全量接入、事后清洗的活我的团队也不应该在这类事上浪费人力。如果你正在搭数据平台、做数据治理或者正处于“感觉数据一大堆、但又不知道能做什么”的迷茫期我建议你先停下来别急着上工具、扩存储。你可以拿着上面的四步判断法把你手上的数据源认真盘一遍。你大概率会发现真正称得上数据的其实没有你想象的那么多。但正因为如此那些为数不多的核心数据才会变得无比珍贵。
返回列表