数据地基系列第三篇。第一篇讲地基坏了,第二篇讲没人看得清全貌,这一篇讲——看清全貌的人,到底在做什么。
上一篇结尾我说,“最稀缺”和”最新”是两个词。有读者留言问:那到底是什么能力?
我想了很久怎么回答这个问题。后来觉得,与其下定义,不如先讲一个场景。
数字对不上的那个下午#
做过数据的人大概都经历过这种时刻:
业务方拿着一张报表过来,指着某个数字说:“这个不对。”
你看了一眼,心里也觉得不太对。但”不对”三个字说起来轻松,往下查才知道有多重。
这个数字从哪来的?报表层。报表层的数据谁写的?一个定时任务,每天凌晨跑。定时任务从哪取数?数仓的 ADS 层。ADS 层的逻辑是什么?一段 SQL,join 了三张表。这三张表又从哪来?DWD 层做了清洗和拆分。DWD 的上游呢?ODS,原始数据,从业务库同步过来的。业务库的数据又是谁写进去的?业务系统,某个接口,在某个用户做了某个操作之后。
你看,一个数字,背后是七八层系统,每一层都有自己的逻辑、自己的定时、自己的负责人——有时候也没有负责人。
—> B[业务系统] B —> C[ODS 原始层] C —> D[DWD 明细层] D —> E[ADS 应用层] E —> F[报表 / BI] F —> G[📊 业务方] style A fill:#1a2f5a,color:#fff,stroke:#1a2f5a style G fill:#1a2f5a,color:#fff,stroke:#1a2f5a style B fill:#2a4a8a,color:#fff,stroke:#2a4a8a style C fill:#2a4a8a,color:#fff,stroke:#2a4a8a style D fill:#2a4a8a,color:#fff,stroke:#2a4a8a style E fill:#2a4a8a,color:#fff,stroke:#2a4a8a style F fill:#2a4a8a,color:#fff,stroke:#2a4a8a ]
大多数时候,问题不出在任何一”层”里面。问题出在层和层的接缝处。
数据同步延迟了两小时,但下游任务照常跑了。某个字段在业务库里改了枚举值,但 ETL 脚本还是按老逻辑处理。两张表 join 的时候用了左连接,但有一方的主键出现了重复。
这些问题,任何一个单拎出来都不复杂。但难的是——你怎么知道该去哪一层找?
追踪,不是精通#
我见过不少数据同学的简历,写着精通 Spark、精通 Flink、精通某某调度平台。技术深度当然重要,但我越来越发现,真正在团队里不可替代的人,往往不是技术最深的那个,而是”出了问题能追到根”的那个。
这种能力,我给它起了个不那么性感的名字:数据链路追踪能力。
它的核心不是精通每一层的技术细节。你不需要能手写一个 Flink connector,也不需要背下来 Spark 的 shuffle 机制。你需要的是另一种东西:知道数据从产生到最终呈现,经过了哪些环节,每个环节做了什么变换,接缝处可能出什么问题。
说白了,这是一种系统性的追问能力。
有个比喻可能不太恰当,但挺好理解:你不需要会修水管,也不需要会修水泵,但你得知道水是从水库经过水厂、主管道、分管道、再到你家水龙头的。水龙头没水了,你得知道该先查哪个环节,而不是对着水龙头拧来拧去。
提问比回答更难#
数据链路追踪能力的本质,其实是提问能力。
听起来有点虚,但仔细想想:当那个”数字对不上”的场景出现时,真正拉开差距的,不是谁的 SQL 写得更快,而是谁能更快地问出正确的问题。
一个刚入行的同学可能会说:“我去查查 SQL 逻辑。“然后盯着几百行代码看半天。
一个有经验的同学会先问几个问题:
- 这个数字是今天才不对,还是一直不对只是今天才发现?
- 最近这个链路上有没有人改过什么东西?
- 对应的上游数据,量级有没有明显波动?
- 报表里这个指标的口径定义,和业务方理解的是不是同一个?
你看,这四个问题,没有一个涉及具体的技术实现。但回答完这四个问题,你大概率已经把排查范围缩小了 80%。
剩下的 20%,才是翻代码的事。
这就是为什么有些人排查问题又快又准,不是因为他们更聪明,而是因为他们脑子里有一张完整的链路图——从数据产生到最终消费,每一个环节、每一个接缝,都大致知道在哪里、做了什么、可能出什么幺蛾子。
没有文档的世界#
现实是,绝大多数公司的数据链路是没有完整文档的。
我不是在吐槽。这事有它的原因:系统是一点一点长出来的,不同时期不同的人搭的,每个人都只管自己那一段。数据仓库的分层规范可能有,但真正跑的 SQL 是不是按规范写的,那是另一回事。血缘分析工具可能也有,但覆盖率永远不是 100%。
所以数据链路追踪能力的另一面是:在没有文档的情况下,还原真相。
怎么还原?说几个笨办法,但确实管用:
第一,自己画。 找一个你最熟悉的报表,从最终呈现的数字开始,一层一层往上游追。每经过一层,记下来:数据从哪来,做了什么变换,输出到哪里,负责人是谁(如果有的话)。画出来之后你会发现,光是搞清楚这一条链路的全貌,可能就要花半天到一天。
第二,找接缝。 画完之后,重点看层和层之间的衔接:同步机制是什么?有没有重试?失败了告警谁?数据格式在这一步有没有变化?主键是不是一致的?时区处理是不是统一的?大量的 bug 藏在这些地方。
第三,问人。 是的,问人。别笑。很多关键信息只存在于某个老员工的脑子里。“这个表为什么有两个版本?""这个字段当初为什么要这样定义?“这些问题的答案经常不在代码里,而在某次会议的决策中,或者某次线上事故的临时处理里。
这三步加起来,就是在做一件事:在没有上帝视角的情况下,自己一点一点拼出来那张全景图。
不酷。不快。但真的有用。
AI 来了,这个能力反而更值钱#
说到这里,有人可能会想:AI 时代了,这些追踪的活,以后 AI 不就能干了吗?
我倒觉得恰恰相反。
AI 进入数据链路之后,系统变得更不透明了,不是更透明。
以前,你从报表追到数仓追到 ETL 追到业务库,每一层好歹是确定性的逻辑——SQL 写了什么就是什么,虽然可能写得很烂,但至少是确定的。
现在呢?链路里多了一层——或者好几层——AI 的处理。一个模型对文本做了分类,一个模型对数据做了补全,一个模型生成了某个推荐结果。这些环节的输入输出关系不再是简单的映射,而是一个黑盒。同样的输入,不同时间跑可能出不同的结果。
这意味着什么?意味着接缝更多了,不确定性更大了,追踪的难度也更高了。
以前你可以翻 SQL 看逻辑,现在你还得理解 prompt 的设计意图、模型的版本差异、推理过程中的 token 截断。以前一条链路可能是五层,现在可能是八层,而且中间有几层是”有时候行有时候不行”的。
所以那个能看清全貌、能追踪链路、能在接缝处发现问题的人,反而变得更稀缺了。不是因为 AI 替代不了这个能力,而是因为 AI 让这个能力的应用场景变得更多、更复杂了。
怎么开始练#
如果你觉得这个方向值得投入,我的建议很简单:从你今天负责的工作开始。
找一个你每天都在用的数据指标。不用挑最复杂的,就挑一个你最熟悉的。然后问自己:
这个数字是怎么来的?
从报表层往上追,追到数仓,追到数据同步,追到业务系统,追到用户行为。每一层记录下来。画不画图无所谓,用文档也行,用纸笔也行。
重点是完整地走一遍。
走完之后,你大概率会发现几件事:
- 有些环节你以为你懂,其实你只知道它”大概做了什么”,细节并不清楚
- 有些接缝处的处理逻辑让你皱眉——“居然是这么搞的?”
- 有些环节压根找不到负责人,代码注释写着某个已经离职的同事的名字
这些发现本身就是价值。它们意味着你开始真正理解系统了,而不只是在系统上面工作。
然后换一个指标,再追一遍。追个三五次,你脑子里就会开始形成一张越来越完整的链路图。以后再遇到”数字对不上”的场景,你的第一反应不再是慌,而是”大概是哪个区间的问题”。
这种直觉不是天赋,是追出来的。
最后#
这篇文章没有讲任何新技术、新框架、新工具。在一个所有人都在追”新”的行业里,这可能显得有点不合时宜。
但我始终相信一件事:技术会换代,工具会淘汰,只有理解系统运作方式的能力,是可以跟着你走一辈子的。
数据链路追踪不是一个岗位,不是一个认证,甚至不会出现在任何 JD 里。但它是那种——你有了之后,别人说不出你哪里强,但就是觉得你靠谱的东西。
不是最时髦的路,但走得最扎实。
——石头
如果这篇文章让你觉得「该动了」,不妨从系统学起。
拾穗数据知识库涵盖数据分析师和数据工程师的完整成长路径——技术栈、求职方法论、职场晋升——都是从真实经历里提炼出来的,不卖焦虑,只讲可落地的东西。