跳到正文

更多文章

每次问 AI 都要从头解释,是你的工作还没有留下“说明书” AI 模型再聪明,也救不了一条喂不动的数据链路 上线前多重放 1 次历史数据,可能少背 3 次锅 Spark 任务跑了 3 小时,别急着问 AI 怎么调参 学了 30 个数据教程,为什么面试还是讲不清一个项目?
老板问“为什么两个数不一样”,你不能只回答一个是实时的

会议室里最安静的一刻,往往出现在两个数对不上的时候。

老板看着大屏问:“为什么这里销售额是 128 万,日报里是 131 万?”

做数据的同学低头看了一眼,回答:“一个是实时的,一个是离线的。”

这句话很常见。

也很危险。

因为它解释了现象,却没有解释边界。老板听完还是不知道该信哪个数,业务听完还是不知道明天能不能用,最后大家只记住一件事:数据又对不上。

“实时”和“离线”不是免死金牌

实时数据和离线数据不一样,这很正常。

实时链路更快,但可能有延迟到达、重复消息、状态回写、退款补录。离线链路更稳,但通常按批次跑,看到的是某个时间点之后整理过的结果。

问题在于,很多人把“实时/离线”当成解释的终点。

其实它只是起点。

老板真正想知道的是:这两个数差在哪里,差多少算正常,什么时候会收敛,今天决策应该看哪个。

如果你只说“一个实时一个离线”,就像医生只说“一个是体温计,一个是血常规”。信息没错,但病人还是不知道怎么判断。

两个数不一样时先看四层

LTAP 很热,但普通人先看懂一致性

最近 Databricks 推 Lakebase,讨论 LTAP,也就是把事务型处理和分析型处理放到更统一的数据底座里。

这类趋势很好理解:大家都不想维护太多套系统,也不想在业务库、数仓、湖仓、缓存之间来回搬数据。

可是 Regatta 的反方文章也提醒了一点:存储统一,不代表一致性问题自动解决。

对普通数据从业者来说,不一定要立刻掌握所有架构细节。但你要有一个基本意识:两个数不一样,背后通常不是“谁算错了”这么简单。

它可能来自:

  • 数据时间窗口不同;
  • 写入和统计看到的版本不同;
  • 迟到数据处理规则不同;
  • 退款、取消、补录的状态归属不同;
  • 实时链路和离线链路过滤规则不同。

这些问题如果不讲清楚,未来 AI 问数也会踩同样的坑。

AI 会很快回答“销售额是多少”。但如果系统里同时存在实时销售额、离线销售额、财务确认销售额、运营口径销售额,它很可能答得又快又乱。

你应该给出 4 层解释

下次再遇到两个数不一样,不要只说实时/离线。

可以按 4 层解释。

第一层:来源。

这两个数分别来自哪张表、哪条链路、哪个报表。先让大家知道它们不是凭空出现的。

第二层:时间。

一个看的是截至当前分钟的数据,另一个看的是昨晚批处理后的数据;一个包含今天退款,一个要到明天才回写。时间窗口说清楚,很多争议会少一半。

第三层:规则。

哪些订单算进去,哪些不算;取消订单算不算,退款什么时候扣,测试订单有没有排除。规则不说清,数字永远像吵架。

第四层:使用建议。

这才是最重要的。今天要看趋势,用实时数;月底要对账,用离线确认数;活动现场要盯异常,用实时看板;财务结算不能用实时看板截图。

数据分析师的价值,不是证明其中一个数绝对正确,而是告诉别人每个数适合干什么。

别把差异藏起来

很多人怕解释两个数不一样。

好像一解释,就承认数据不可信。

其实恰好相反。真正让人不信数据的,是差异永远没有解释。你越遮,大家越觉得里面有问题。

如果你能在报表旁边写清楚:这个实时指标通常会在 T+1 后和离线口径收敛,正常差异范围大约来自退款和迟到订单,超过某个范围需要排查上游,那业务反而更敢用。

数据可信,不是所有数永远一样。

数据可信,是差异出现时,有人能说明它为什么出现、什么时候消失、该怎么用。

这就是普通数据从业者在 AI 时代更需要补的一课。

模型可以帮你查数。

但解释两个数为什么不一样,仍然是人的工作。

下次开会前,先准备一张差异卡

如果你经常被问到两个数为什么不一样,可以提前给自己准备一张很小的差异卡。

不用复杂,5 行就够:

  • 指标名;
  • 实时口径;
  • 离线口径;
  • 常见差异来源;
  • 建议使用场景。

一张差异卡

这张卡的作用,不是让你在会上显得准备充分。它是帮你把“临场解释”变成“稳定判断”。

很多数据分析师在会上吃亏,不是因为算错了,而是因为只带了结果,没有带解释结果的材料。别人一问,自己就只能临时组织语言。越解释越像辩解。

有了差异卡,你可以很平静地说:这两个数确实不同,差异主要来自退款回写和数据窗口;今天看活动趋势用实时数,月底复盘和财务对账看离线确认数。

这句话比“一个是实时的”多不了多少字。

但可信得多。


我叫石头,在数据行业里摸爬滚打了十几年,见过太多“一个实时一个离线”后面藏着的真问题。这里写的,就是这些教训——我觉得值得说出来的那部分。

来源:Databricks Lakebase · Regatta:storage unification is not enough

Elazer (石头)
Elazer (石头)

11 年数据老兵,从分析师到架构专家。用真实经历帮数据人少走弯路。

加入免费社群

和数据从业者一起交流成长

了解详情 →

成为会员

解锁全部内容 + 知识库

查看权益 →

1v1 咨询

有具体职业困惑?一小时说清楚

预约咨询 →
← 上一篇 Spark 任务跑了 3 小时,别急着问 AI 怎么调参 下一篇 → 上线前多重放 1 次历史数据,可能少背 3 次锅