3、需求分析与范围界定:如何与业务方沟通、识别关键指标、确定数据粒度与更新频率

说实话,我见过太多数据集市项目翻车,原因都不是技术不行,而是需求没聊透。

业务方说「我要看销售数据」,你吭哧吭哧建完了,他一看:「不对,我要的是按门店、按小时、含退货的实时数据。」——得,重来吧。

所以这一章,咱们就聊聊怎么把需求聊清楚,把范围定死,把坑提前踩平。

3.1 与业务方沟通:别聊技术,聊场景

我刚开始带项目时,特别喜欢跟业务方讲星型模型、讲缓慢变化维度。结果呢?对方一脸茫然,回去跟领导说「数据团队要做个很复杂的东西,可能要很久」。

后来我学乖了。沟通的核心就一句话:问场景,不问字段。

我的沟通三板斧:
  1. 你每天打开电脑,第一个看的报表是什么? —— 找到核心高频场景
  2. 哪个数据不准的时候,你会被老板骂? —— 找到关键质量指标
  3. 如果这个数据晚一小时出来,会怎样? —— 摸清时效底线

举个例子。有一次跟零售业务方聊,对方上来就说「我要一个全渠道销售分析」。我追问:「你平时最关注哪个渠道?」他说:「线上。因为线下有店长盯着,线上我看不到。」

好,那第一版就先做线上。线下数据后面再补。范围一下子就收窄了。

避坑: 我曾经遇到一个业务方,把所有需求列了满满三页纸。我问他「哪个最急」,他说「都急」。后来我让他按「没有这个数据我会死」到「有更好没有也行」排了个序。结果前三个需求覆盖了他80%的日常决策。剩下的?后面迭代再说。

3.2 识别关键指标:从 KPI 到原子指标

业务方嘴里说的指标,往往是个「复合概念」。比如「客单价」,它其实是「总销售额 / 总订单数」。但如果你直接建一个「客单价」字段,后面想拆分子维度就麻烦了。

我的做法是:把指标拆成原子指标 + 维度 + 业务限定。

业务说法 原子指标 维度 业务限定
本月线上客单价 销售额、订单数 时间(月)、渠道(线上) 已支付、非测试订单
华东区门店缺货率 缺货商品数、总商品数 区域(华东)、门店 只统计在售品
会员复购率 复购会员数、总会员数 时间(近30天) 排除首单当天

你想想看,如果一开始就建了「客单价」这个字段,业务方突然说「我要看按品类的客单价」,你就得重新算。但如果你存了销售额和订单数两个原子指标,任何维度的客单价都能随时算出来。

核心原则: 数据集市里尽量存原子指标,计算指标交给上层应用。这样灵活度最高,维护成本最低。

3.3 确定数据粒度:越细越好?不一定

粒度,说白了就是「一行数据代表什么」。是每一笔交易?还是每天每个门店的汇总?

我见过一个团队,业务方说「我要看实时数据」,他们就按秒级粒度建了表。结果数据量暴增,查询慢得要命。业务方其实只是想要「每小时的销售趋势」,秒级数据根本用不上。

所以,粒度由查询场景决定。我一般这样判断:

  • 如果业务方要「下钻」 —— 比如从全国看到门店,再看到收银员 —— 那粒度至少要到「单笔交易」甚至「单品」。
  • 如果只看趋势 —— 比如月度同比、季度环比 —— 天级粒度就够了。
  • 如果涉及库存、财务 —— 这些通常需要精确到「每一笔变动」,粒度要最细。
我的经验: 拿不准的时候,先按最细粒度建。因为从细到粗很容易(写个聚合任务就行),但从粗到细?数据丢了就真没了。不过要跟业务方说清楚:细粒度数据查询会慢,高频查询我们会预聚合。

3.4 确定更新频率:别被「实时」忽悠了

业务方一说「我要实时数据」,很多技术同学就头大。其实你追问一句:「实时到什么程度?」答案往往是「别超过5分钟就行」或者「每小时更新一次也可以」。

更新频率的选择,本质上是在 时效性 和 成本 之间找平衡。

更新频率 适用场景 成本 我的建议
T+1(天级) 财务月报、年度分析、历史趋势 低 能用T+1就别用更高的
小时级 运营日报、库存监控、营销活动效果 中 大部分业务场景够用
分钟级 实时大屏、风控、异常告警 高 确认业务方真的需要
秒级/实时 交易系统、在线推荐、实时定价 极高 慎重,通常需要独立架构
避坑: 我曾经被业务方要求「实时更新」,结果上线后发现他们的源系统每天凌晨才出数据。实时了个寂寞。所以一定要先搞清楚:源数据什么时候准备好? 如果源数据本身就有延迟,你这边再实时也没用。

3.5 需求文档怎么写:把「共识」变成「契约」

聊完了、定好了,一定要写文档。别信「我们都口头说好了」,两周后保证有人不认账。

我的需求文档模板长这样:

# 数据集市需求说明书

## 1. 业务场景
- 业务方:XXX部门
- 使用人:XXX
- 核心场景:每日查看各门店销售情况,支持按品类下钻

## 2. 指标清单
| 指标名称 | 原子指标 | 维度 | 业务限定 |
|---------|---------|------|---------|
| 销售额 | 订单金额 | 门店、品类、时间 | 已支付、非退货 |

## 3. 数据粒度
- 粒度:单笔交易(交易ID唯一)
- 原因:需要下钻到单品级别

## 4. 更新频率
- 主表:T+1,每日凌晨3点更新
- 聚合表:小时级,每小时更新一次
- 原因:源系统每日凌晨2点完成数据同步

## 5. 验收标准
- 数据准确率:与源系统对账一致
- 查询响应:单表查询 < 3秒
- 更新时效:每日8点前数据可用

## 6. 签字确认
- 业务方:______  日期:______
- 数据团队:______  日期:______

嗯,这里要注意:一定要让业务方签字。不是说要追责,而是让他意识到「这是我们共同确认的」。后面他再提新需求,你就可以说:「这个不在当前范围,我们排到下个迭代吧。」

3.6 知识体系总览

下面这张图,把需求分析与范围界定的核心流程串起来了。我每次做新项目都会先走一遍这个流程,基本不会跑偏。

需求分析与范围界定流程 1. 与业务方沟通 2. 识别关键指标 3. 确定数据粒度 4. 确定更新频率 5. 输出需求文档 关键产出物 • 业务场景清单 • 原子指标字典 • 粒度定义文档 • 更新频率约定 • 验收标准 • 签字确认页 迭代反馈

你看,整个流程是环形的。需求文档签完字,不代表结束。业务方用起来之后,一定会冒出新的想法。这时候就回到第一步,重新沟通、重新界定范围。迭代几次之后,数据集市才会越来越贴合业务。

最后说一句: 需求分析阶段多花一周,后面能省一个月。别急着动手建表,先把「做什么」和「不做什么」跟业务方彻底对齐。这是整个数据集市项目最值得投入的时间。