市场、产品和财务各带一个数字来开同一个会时,问题很少出在数据本身,而是没有就定义、负责人和允许差异达成一致。本文讲清事实来源和事实版本的区别,列出数字对不上的原因,并把一个月的四个收入数字对清楚,变成大家都能用的命名指标。
读完你会知道
- 单一事实来源 = 每个指标一个公认定义和负责人
- 数据可以放在多个系统里,定义只能有一份
- 给每类实体指定记录系统,并和它对账
- 设定明确的允许差异,不追求零差异
- 每次改定义都要公告并标注
什么是单一事实来源?
单一事实来源(Single Source of Truth,SSOT)是指每一项重要数据,比如客户、收入、活跃用户、商品目录,只保留一个可信、公认的版本,让所有报表、团队和工具用同样的数值和定义。两个看板对不上时,「哪个对」就在这里裁定。
这个说法来自信息架构:每个数据元素只在一个地方维护(新建和修改),其他地方都引用它,而不是各存一份。
单一事实来源和单一事实版本
两者经常被混为一谈:
| 单一事实来源 | 单一事实版本 | |
|---|---|---|
| 含义 | 每类实体只有一个记录系统 | 每个指标只有一个公认定义和数字 |
| 例子 | 发票以计费系统为准 | 「月活跃用户」只定义一次、只算一次 |
| 没有时的问题 | 两套 CRM 里客户地址不一样 | 市场报 14,900 个活跃用户,产品报 12,400 |
| 常见做法 | 主数据管理、记录系统规则 | 数据字典、指标层、认证过的看板 |
在数据分析里,第二个问题常见得多。数据完全可以放在好几个系统里,只能有一份的是每个指标的定义和负责人。
| 单一事实来源 | 单一事实版本 | |
|---|---|---|
| 含义 | 每类实体一个记录系统 | 每个指标一个定义 |
| 例子 | 发票以计费为准 | 月活只定义一次 |
| 做法 | 主数据规则 | 数据字典、指标层 |
在数据分析里,事实版本的问题更常见。
为什么数字对不上
| 原因 | 例子 |
|---|---|
| 定义不同 | 「活跃」= 登录过、有任何埋点事件,还是付费 |
| 时区或截止时间不同 | UTC 日和本地日;月末结账和自然月 |
| 过滤条件不同 | 只有一份报表算了机器人、内部流量、测试账号 |
| 身份口径不同 | 按设备、按访客还是按登录用户计数 |
| 采集缺口 | 广告拦截、用户同意、服务端事件缺失 |
| 时间差 | 报表导出之后才入账的退款和迟到事件 |
更详细的对账清单见为什么各家统计工具数字不一样。
计算示例:一个月的三个收入数字
周会上,10 月的收入有好几个数(示例数据):
| 来源 | 收入 | 为什么不同 |
|---|---|---|
| 计费系统,扣款总额 | 412,300 美元 | 包含后来退款的扣款 |
| 计费系统,扣除退款 | 406,100 美元 | 当月退款 6,200 美元 |
| 统计里的购买事件 | 405,600 美元 | Webhook 超时丢了 4 个购买事件(500 美元) |
| 财务,确认收入 | 398,900 美元 | 年付套餐按月确认,而不是扣款时确认 |
这些数没有一个是错的,各自回答不同的问题。解决办法是把这些写下来定好:
- 金额的记录系统: 计费系统,扣除退款后的数。看板上所有收入数字都和它对账。
- 允许的差异: 统计里的购买事件和计费净收入的差距要在 ±1% 以内。这里差 0.12%,在允许范围内;超出就要有人去查。
- 给指标命名: 「预订额」(扣款净额)、「确认收入」(财务)、「埋点收入」(统计,用于归因和漏斗),各有定义、负责人和计算位置。
- 每张图都写清楚: 哪个指标、哪个来源、哪个时区。
这样以后,周会不再争论数字本身,而是讨论趋势。
埋点收入对比计费(允许 ±1%)
−0.12%
退款
6,200 美元
丢失的 Webhook 事件
4
10 月收入 · 对账
记录系统:计费(净额)| 来源 | 收入 | 对比计费净额 |
|---|---|---|
| 计费,扣款总额 | 412,300 美元 | +1.53% |
| 计费,扣除退款 | 406,100 美元 | — |
| 统计购买事件 | 405,600 美元 | −0.12% |
| 财务,确认收入 | 398,900 美元 | −1.77% |
示例数据。统计和计费净额的允许差异:±1%。
怎么建立单一事实来源
- 盘点重要的指标。 从管理层报表里用到的 10 到 20 个开始,不是数仓里的每一列。指标树能帮你挑。
- 给每类实体指定记录系统: 客户(CRM)、金额(计费)、行为(统计)、商品目录(电商平台)。
- 在数据字典里写清定义: 公式、过滤条件、身份口径、时区、负责人、最近一次复核时间。
- 通过受管控的数据管道把数据汇到一处,指标只在那里算一次:可以是带指标层的数仓,也可以是能保存指标定义的统计工具。
- 认证看板。 标出用了官方定义的看板,其余都标成探索用。
- 定期对账,设定明确的允许差异,并记录数据血缘,让任何人都能把一个数字追溯到源头。
- 指定负责人和变更流程。 定义会变;变的时候要在图表上标注并通知使用者,这就是数据治理的核心。
常见错误
- 以为单一事实来源就是一个数据库。 硬把一切塞进一个工具往往失败;统一定义和血缘才管用。
- 想一次定义所有东西。 从管理层真正在用的指标开始。
- 没有负责人。 没人负责的定义,几个月就会走样。
- 悄悄改定义。 一次过滤条件的调整让「活跃用户」少了 8%,必须公告并标注。
- 期待完全一致。 不同系统量的东西本来就不同;设定允许差异,不要追求零差异。
在 TapCub 里落实单一事实来源
- 保存指标定义: 把指标定义成自定义指标,在各个分析和看板里复用,「激活用户」到哪里都是一个意思。
- 埋点方案和数据质量页: 事件和属性在一个地方定义,出现新的或拼错的事件时会有提醒。
- 购买事件带订单号,通过服务端事件发送,埋点收入就能和计费逐笔对账。
- 图表标注记录定义的变更。
- 当数仓是关联指标的记录系统时,用原始数据导出和 SQL。
另见:营销技术(Martech)是什么?类别、技术栈示例和管理方法、湖仓一体和数仓。
参考资料
- DAMA International (2017). DAMA-DMBOK: Data Management Body of Knowledge, 2nd ed. Technics Publications.
- Atlassian. Building a true single source of truth for your team.
- Kimball, R. and Ross, M. (2013). The Data Warehouse Toolkit, 3rd ed. Wiley (conformed dimensions).
这篇文章对你有帮助吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。


