BI 详解:从多源数据到管理层驾驶舱
本系列第五篇。MES / LIMS / ELN / EDC / BI(本篇)/ PMS。
一句话定位
把散落在 MES / LIMS / ERP / CRM 里的数据,变成管理层一眼能看懂、能据此做决策的东西。
BI 不产生数据,它搬运、组织、翻译数据。听起来简单,实际上是企业数字化里最”政治”的系统——因为指标口径就是权力。
四层架构
┌─────────────────────────────────────────────┐
│ 展示层 报表 · 驾驶舱大屏 · 订阅推送 │
├─────────────────────────────────────────────┤
│ 语义层 指标定义(口径的唯一事实源) │
├─────────────────────────────────────────────┤
│ 建模层 明细宽表 · 星型模型 · 预聚合 │
├─────────────────────────────────────────────┤
│ 采集层 CDC 实时同步 · 定时批量 · API 拉取 │
└─────────────────────────────────────────────┘
ODS 原始层 ← MES / LIMS / ERP / CRM
- 采集层:CDC(变更数据捕获)拿实时性,定时同步兜底,API 拉取补长尾
- 建模层:星型模型(事实表 + 维度表);批次状态历史用缓慢变化维 SCD2——“上周三这批货是什么状态”必须可回答
- 语义层:本篇的主角,见下文
- 展示层:报表、大屏、推送——最光鲜、最不值钱的一层
语义层:口径的唯一事实源
“活跃批次”是什么意思?生产说是”未放行的”,质量说是”未关闭偏差的”,仓库说是”在我们冰箱里的”。三个部门三种算法,三个数字,会议开成菜市场。
语义层的使命:一个指标,一处定义,处处引用。
metric: batch_pass_rate # 批次一次性合格率
formula: count(pass_batches) / count(finished_batches)
dimensions: [产线, 产品类型, 月份]
owner: 质量部
version: 2.1
指标代码化(YAML/代码定义)、版本化(口径变更留痕)、有 owner(出了争议有人拍板)。语义层不是技术产物,是组织共识的代码化。
为什么自研(以及为什么不)
开源方案 Superset / Metabase 很强,什么时候自研是合理的:
- 行业指标深度定制:批次一次性合格率、放行周期、检验周转 TAT、产线 OEE——这些不是”配置出来的”,要和 MES/LIMS 的领域模型深度咬合
- 权限与组织架构绑定:行级权限(RLS)按事业部隔离,字段级按角色脱敏
- 私有化交付:To B 客户要求整套进内网,还要对接钉钉/企微推送
但别把轮子都造了:SQL 构建器、图表渲染库,生态里有的是。自研的边界画在语义层和行业指标,不在图表组件。
关键技术挑战
一:指标口径统一。 上面说透了。补一句实操:新报表需求先审指标,指标库里有的才准上——没有就先定义,走评审。前期慢,后期快。
二:性能。 明细宽表上亿行的真实场景:
- 预聚合:常用维度组合的汇总表定时算好,查询走汇总,钻取走明细
- 物化视图 + 查询路由:框架按查询模式自动选”走汇总还是明细”
- 实时与 T+1 分治:驾驶舱大屏要实时(流式聚合),经营报表 T+1 足够——别为一张月报上流式架构
三:自助与治理的平衡。 完全管控,业务部门排队等开发;完全自助,野指标满天飞。折中:字段和指标开放,口径不开放——业务自己拖维度度量,但指标定义动不了。
四:订阅推送。 定时任务调度、失败重试与告警、多渠道(邮件/钉钉/企微)。凌晨跑批失败没人知道,早上例会开天窗——推送链路的可观测性要做。
五:导出中心。 十万行导出必须异步化:任务队列 + 文件存储 + 下载中心,绝不在线程里同步生成 Excel 拖垮服务。
指标体系怎么建
先业务后技术,自上而下:
- 北极星指标:公司今年就盯那一个(如:交付准时率)
- 部门指标:拆到质量、生产、检验、注册(合格率、产能利用率、TAT、申报进度)
- 过程指标:拆到产线、站点、人员
拿 CGT 行业举几个真实口径的例子:
| 指标 | 口径要点 |
|---|---|
| 批次一次性合格率 | 一次性 = 无偏差放行的批次 / 完成放行的批次 |
| 放行周期 | 生产完成时间 → QA 放行时间,剔除等待患者的冻存时间 |
| 检验周转 TAT | 样本接收 → 报告审批,按检测项分别统计 |
| 产能利用率 | 实际培养位占用 / 可用培养位,按天取快照 |
注意”放行周期”那行的”剔除”——每个真实口径都长这样,教科书上没有。
几点体会
- BI 项目 80% 的时间在数据治理,20% 在做图。反过来的项目都死了
- 没人看的报表做得再炫也是负债——每张报表定期问一句”谁在什么决策里用它”
- 数字不一致时,人们永远相信对自己有利的那个。语义层的价值就是让争论回到口径本身