数据市场不是「数据放在那儿就行」,是一份能查的目录:谁负责、多久更新、有哪些字段、 口径是什么。 演示五个数据集:按字段一查就知道哪两张能 join,两个「金额」却差一个退款。 一个数据集要写清六件事,最后两件(口径、新鲜度)最常被漏。
第 6 章讲数据怎么存。这一章讲怎么用出去——先把数据摆成别人能用的样子。 教材 7.1 节:数据市场(Data Marketplace)。 一句话:它解决的不是「有没有数据」,是「知不知道该用哪份」。
一、市场这个词有点误导
听到「数据市场」,容易想成把数据卖钱。教材的意思不是这个。 它说的是数据像商品一样摆出来:有名字、有说明、有负责人。你想用什么,先看货架, 而不是挨个仓库翻。 现实里更常见的状态恰好是反的:数据一大堆,没人说得清哪份是对的。
新人入职第一周,花在「找数据」上的时间往往比花在「分析」上多。 所以这一篇的目标很朴素:把「找数据」这件事,从问人变成查表。
二、最小版目录长什么样
演示列了五个数据集:订单明细、订单汇总日表、用户画像、商品维表、渠道投放花费。 每行四件事:负责方、更新频率、主要字段。就这些,不多。 这张表就是数据市场的最小形态:不只是有数据,还要说清这数据是什么。
没有它的时候,新人要问三个人才知道订单该用哪张表,而且三个人的答案可能还不一样。 注意「更新频率」这一列:每小时、每天 06:00、每周一。它直接决定了这份数据能不能拿来做实时看板。
三、按字段找:能不能 join 先看键
演示第二段做了一件很小的事:给一个字段名,反查哪些数据集里有它。 含 user_id 的:订单明细、用户画像。含 channel 的:订单汇总日表、渠道投放花费。 这就是数据市场最实用的功能:你想 join 两张表,先看它们有没有共同的键。
没有目录的时候,这件事靠猜。 猜错的后果有两种:join 出空结果,或者更糟——join 上了,但两边的键根本不是一回事。 第二种情况下一段专讲。
四、同名不同义,是最贵的坑
订单明细有 amount,订单汇总日表有 gmv。两个都叫「金额」。 一个口径是单笔金额、含退款单;另一个是当日成交额、不含退款。 同一家公司,两个「销售额」,差一个退款。 谁对?都对,看你要回答什么。
财务要「不含退款」,因为退款的钱没进来;运营看「含退款」,因为那代表用户下过单。 这类分歧必须写进「口径」那一栏,否则每个月都要吵一次。 更麻烦的是没人写。半年后连做这张表的人自己都说不清了。
所以数据市场里最值钱的不是数据本身,是那几行说明文字。
五、一个数据集该写清六件事
名字、负责方、更新频率、字段与类型、口径说明、新鲜度。 前四件基本都会写,后两件最常被漏。 口径说明决定「这个数是什么」,新鲜度决定「这个数是几点的」。这是两个不同的问题。
举例:报表说「今日成交 120 万」。你得能回答「截至几点」「含不含退款」,否则这个数没法拿去决策。 第 8 章整章讲的就是怎么把这几件事管起来——那叫元数据管理。这一篇只是手工版的目录。
六、动手 Demo:五个数据集,一份能查的目录
列五个数据集,每个带负责方、更新频率、字段。 按字段反查,看哪两张能 join。 对照两个都叫「金额」的字段,看口径差在哪。
CATALOG = [
{'name': '订单明细', 'owner': '交易组', 'freq': '每小时',
'fields': ['order_id', 'user_id', 'amount', 'status']},
{'name': '订单汇总日表', 'owner': '交易组', 'freq': '每天 06:00',
'fields': ['dt', 'channel', 'gmv', 'orders']},
{'name': '用户画像', 'owner': '增长组', 'freq': '每周一',
'fields': ['user_id', 'city', 'age_band', 'life_stage']},
{'name': '商品维表', 'owner': '商品组', 'freq': '每天',
'fields': ['sku', 'category', 'price']},
{'name': '渠道投放花费', 'owner': '市场组', 'freq': '每天 10:00',
'fields': ['dt', 'channel', 'cost']},
]
# 按字段反查:能不能 join,先看有没有共同的键
for f in ('user_id', 'channel', 'cost'):
hit = [c['name'] for c in CATALOG if f in c['fields']]
print(f, '->', '、'.join(hit))
实跑输出:
--------------------------------------------------------------------
数据市场:先查目录,再决定用哪张表
--------------------------------------------------------------------
① 五个数据集,各带一份说明
--------------------------------------------------------------------
| 数据集 | 负责方 | 更新频率 | 主要字段 |
|---|---|---|---|
| 订单明细 | 交易组 | 每小时 | order_id、user_id、amount |
| 订单汇总日表 | 交易组 | 每天 06:00 | dt、channel、gmv |
| 用户画像 | 增长组 | 每周一 | user_id、city、age_band |
| 商品维表 | 商品组 | 每天 | sku、category、price |
| 渠道投放花费 | 市场组 | 每天 10:00 | dt、channel、cost |
这张表就是「数据市场」的最小形态:不只是有数据,还要说清这数据是什么。
没有这张表的时候,新人要问三个人才知道「订单该用哪张表」,而且三个人的答案可能不一样。
② 按字段找数据集
--------------------------------------------------------------------
含 user_id 的数据集:订单明细、用户画像
含 channel 的数据集:订单汇总日表、渠道投放花费
含 cost 的数据集:渠道投放花费
这就是数据市场最实用的功能:你想 join 两个表,先看它们有没有共同的键。
演示里 user_id 出现在订单明细和用户画像里,所以这两张能关联;
channel 出现在日表和投放花费里,也能关联。
③ 同名不同义,是最大的坑
--------------------------------------------------------------------
两个数据集里都有「金额」,但意思不一样:
| 数据集 | 字段 | 口径 |
|---|---|---|
| 订单明细 | amount | 单笔金额,含退款单 |
| 订单汇总日表 | gmv | 当日成交额,不含退款 |
同一家公司,两个「销售额」,差一个退款。 谁对?都对,看你要回答什么。
财务要的是「不含退款」,因为退款的钱没进来;运营看的是「含退款」,因为那代表用户下过单。
这类分歧在数据市场里必须写进「口径」那一栏,否则每个月都要吵一次。
④ 一个数据集该写清哪几件事
--------------------------------------------------------------------
| 项 | 为什么必须有 |
|---|---|
| 名字 | 能一眼认出来是干什么的 |
| 负责方 | 出问题找谁 |
| 更新频率 | 决定你能不能用它做实时报表 |
| 字段与类型 | 决定能不能 join、能不能算 |
| 口径说明 | 决定这个数是什么意思 |
| 新鲜度 | 决定这个数截止到什么时候 |
最后两项最常被忽略,也最容易出事。「这个数是什么」和「这个数是几点的」,是两个不同的问题。
第 8 章整章讲的就是怎么把这几件事管起来——那叫元数据管理。
第一张表只有四列,但这四列就是判断一份数据能不能用的全部依据。再少一列,就有人得去问人。 第二段那个反查很土,但它解决的问题很实在:新人不认识任何人的时候, 也能自己判断两张表能不能拼在一起。 第三段是本篇的重点。 两个字段都叫金额、都出现在报表上、数还对不上,这种事在真实公司里每个月都会发生一次。 第四段那六件事里,口径和新鲜度最容易被跳过。跳过之后,这份数据能用,但没人敢用它做决定。
30 秒实验
- 给 CATALOG 加第六个数据集(比如「退款申请表」),看它能和哪几张 join。
- 把「按字段找」改成「按负责方找」,想想为什么这个方向也常用。
- 在自己公司里找两个都叫「销售额」的数,问清它们的口径差在哪。
常见误区
- 「数据市场就是把数据开放出去。」开放只是第一步。没有说明的开放,等于把一堆文件扔给别人。
- 「口径写不写无所谓,问一下就知道。」半年后做这张表的人走了,问谁?
- 「字段名一样就能 join。 」字段名一样、含义不同,join 出来的结果看着正常,数是错的——这种错最难发现。
自测三问(点开对答案)
1. 数据市场里最该写清的是哪两件事? —— 口径说明和新鲜度。一个回答「这个数是什么」,一个回答「这个数是几点的」。 缺了任何一个,这个数都不敢拿去决策。 2. 为什么「金额」这个字段名必须配口径说明? —— 因为同一家公司往往有多个「金额」:含退款的、不含退款的、含税的、不含税的。 名字一样而含义不同,直接拼在一起就会算错。 3. 为什么「更新频率」能决定一份数据能不能用? —— 因为它决定了数据的时效上限。每天 06:00 更新的表,做不了分钟级的实时看板。下一篇讲拿到数据之后怎么现场提问:即席分析。
- ☐ (本篇完,下一篇 7.2 即席分析)