这份数据是给人看还是给系统读,看下游有没有机器在接
同一份数据,做成三列带中文注释的宽表,人看一眼就懂;做成四十个原子字段的宽表,机器读得懂,人打开就懵。选哪个,取决于下游有没有机器。
·
同一份数据,做成三列带中文注释的宽表,人看一眼就懂;做成四十个原子字段的宽表,机器读得懂,人打开就懵。选哪个,取决于下游有没有机器。
分岔点是这份数据下游有没有机器在读
没有机器来拉,只有一个人打开看,那就该做成给人看的样子。三列合并,列名叫"本月实际出货",数字后面带一句备注。这种表难看,但它服务的是判断。
有第二个系统每天来拉,那就必须是原子字段。列名固定、类型固定、缺值用空而不是零。这种表没人看得舒服,但它服务的是对接。
分岔点落在"下游有没有机器在读",不落在"表好不好看"。
有没有机器在读下游,决定这张表长成什么样
两条路摆在这张表里
| 维度 | A 路 给人看 | B 路 给系统读 |
|---|---|---|
| 触发场景 | 只有人看,只有一个人看 | 另一个系统每天来拉 |
| 前提条件 | 格式可以随时改 | 字段名被下游写死 |
| 执行动作 | 三列合并,标上中文注释 | 四十个原子字段,列名固定 |
| 选错的代价 | 下游每次接都重写一遍解析,一个下游一天 | 改一个字段名,下游静默归零,三个报表错十天 |
| 回退方案 | 改成机读,四天加双轨两周 | 加个视图,字段映射写进文档,一天 |
| 什么时候必须停 | 结构每周都在变,先别定型 | 字段名下游写死了,改名就是事故 |
给人看这条路买的是理解成本低。给系统读这条路买的是一次做好、长期不用改。
选错的代价差在哪
A 路选错的代价是重复劳动。下游每接一次,就要写一遍解析,字段名带中文、带空格、带说明,一个下游一天,接三个下游就是三天。更麻烦的是解析规则没地方放,下游各自写一份,改一次列名要通知三个团队。
B 路选错的代价是静默失败。机读表的字段名被下游写死之后,你改一次列名,它不报错,它读不到那个字段就当空值处理,图上还画着线,只是线是平的。三个报表错了十天没人发现,因为格式没变、位数没变。
退回来要花多少
给人看改成机读,四天改造加两周双轨。双轨这两周是最烦的,两套结构同时存在,改一处要记得改另一处。
机读改回给人看,加一个视图,一天,字段映射写进文档。但这个回退有个前提:这期间机读表如果已经有别的系统在消费,回退等于让它们断供。退成本最低的时间窗是机读表交付给下游之前。
优劣在什么条件下翻转
下游数量会翻转优劣。只有一个下游,两边差别很小。有三个以上下游同时在拉同一份数据,机读赢,因为口径只需要在一处维护。
另一条是结构稳定性。结构三个月不动,机读赢,一次做好吃三年。结构每周都变,那就先做成给人看的宽表,别急着定型,因为定型之后每次变都要走一遍改造。
两条都不该走的情况
三条同时命中,两边都别做:只有一个人看、下游没有第二个系统、结构每周都在变。这三条凑齐,先做机读是在给自己埋一个改不动的东西。
我自己在这件事上做错过一次。2019 年给一个只有人看的报表做了标准机读结构,四十多个字段,配了两周。结果没有人愿意打开,因为要看一个数得先看六个字段。后来我又改回三列宽表,那套机读结构闲置了半年才删掉。做机读之前先问一句"谁在读",比问"读它做什么"更重要。
登录后可点赞
← 返回数据团队板块