很多企业都有类似的经历:业务系统上线后,一线人员做数据分析的最后一步,仍是把数据导出成 Excel,在本地用公式加工。京东物流在数据分析平台 Udata 诞生之前,也遇到过同样的问题------系统用到最后成了一个"数据下载工具",每个月流转的 Excel 文件达到百万级别。
本文整理自葡萄城官网公开的京东物流案例,聚焦其中一个技术点:如何用纯前端表格控件,把原本依赖 Excel 的复杂公式计算搬回系统内。
一、业务背景:系统为什么沦为"下载工具"
京东物流是京东集团旗下的综合物流解决方案提供商,自营物流网络覆盖国内外超过 300 个城市,物流基础设施包括超过 500 个物流中心、数万辆专业车队和大量自动化设备。
在 Udata 平台诞生前,其数据使用模式为:一线人员先给研发提需求,研发再针对相应需求整合数据、开发数据分析与查询看板。但因为业务增长迅速、需求变更频繁,需求上线后很快又会发生新的变更;同时用户人员众多、每个人的诉求不一样,最终导致开发的系统成为一款单纯的下载工具------用户需要把数据下载到本地 Excel 之后,再进行后续操作。
通过系统监控发现,每个月使用 Excel 的文件数达到百万级别,带来两个问题:
- 人力成本高:一线人员需要花费大量时间整合数据,工作效率降低;
- 数据安全性差:线下 Excel 交互存在敏感数据泄露的风险,进而带来公司财产损失的风险。
二、为什么复杂计算容易回流到 Excel
预算、预测、精算和经营分析,往往依赖大量公式、跨表引用和模型推演。如果在线系统只支持简单四则运算,最终仍会回流到 Excel 文件。
京东物流在一线调研中,也收集到两个典型反馈:
- 数据方面:数据来源多且杂,使用者很难找到所需数据,系统也很难把所有需要的数据全部囊括进来;
- 易用性方面:市面上常见的数据分析多使用编程方式,而一线人员并不具备这种技术能力。
换句话说,当系统既给不全数据、又用不顺手时,业务人员自然会选择最熟悉的工具------Excel。
三、中国式报表带来的额外挑战
在京东物流的业务中,用 Excel 做数仍是数据使用人员非常主流的处理方式,中国式报表也是常见的报表形式。它有四个特点:
- 受众多样化:不同层次、不同角色的成员都是报表使用者,关心的信息内容、样式和使用方式各不相同;
- 报表样式复杂:使用了较多数据透视、多层表头、不完全划分、分栏等;
- 数据计算复杂:存在 Sumif 函数、汇总、同比、环比、达成状态等复杂统计运算;
- 多数据源:数据来自不同业务系统,技术路线和数据结构差异较大。
这些特点又导致中国式复杂报表治理难度大、研发资源消耗大、大数据技术挑战大。
四、技术能力:在前端完成复杂公式计算
针对"复杂计算回流 Excel"的问题,SpreadJS 提供了在前端完成复杂公式计算的能力。其 Calc Engine 提供 500+ 函数、支持 19 种语言、动态数组、自定义函数以及统计和财务函数;同时兼容 450 种以上 Excel 公式,支持自定义公式、跨表引用和异步函数。
基于"兼容 450 种以上 Excel 公式"与"在前端解析 Excel 文档"这两项能力,SpreadJS 可以在浏览器中承载原本存在于 Excel 文件中的公式与计算逻辑,而无需把数据导出到本地处理。
五、落地实践
5.1 选型标准
考虑到自研成本高,京东物流开始在市面上寻找可与 Udata 高度融合的表格技术控件,并明确三个必须覆盖的核心需求:
- 线下体验一致:高度类似 Excel,提升一线人员使用体验;
- 扩展能力:可与企业内部数据体系、办公系统打通;
- 性能:可承受大数据量的压力测试。
经过长时间选型,最终选择了葡萄城的纯前端表格控件 SpreadJS。
5.2 大数据场景:服务端透视
每年 618、双 11 大促涉及大量数据分析与展示需求,如果把几千万数据全部放到 Excel 中直接分析,显然行不通。京东物流借助"服务端透视"功能,把数据的分析及处理转移到后端,再将筛选之后的数据与表格控件绑定,解决"大数据"与"表格"的融合问题。
5.3 复杂数据分析:数据预加工
在复杂数据分析场景下,通过合并、过滤、字段设置等多种方法对数据进行预加工或预处理,把海量数据转化到系统可以稳定处理的数据量区间,再与表格控件结合,完成分析与展示。
5.4 协同:单元格级颗粒度
协同分为报表协同、独立报表、数据推送和异常预警四部分。SpreadJS 能提供单元格级别的操作颗粒度,通过二次开发可在前端解析 Excel 文档,满足多人协作、协同编辑、数据同步、版本管理、历史查询等多种需求。
5.5 性能:引入 GcExcel
一线人员的办公电脑配置普遍较低,数据量大时报表打开时间很长。为此团队引入了葡萄城的服务端文档组件 GcExcel,它能与 SpreadJS 无缝集成,提供一整套类 Excel 全栈解决方案。借助 GcExcel,Udata 平台把大量计算操作转移到后端由服务器执行,大大降低了前端压力。
六、落地效果
作为面向一线人员的应用系统,Udata 平台已覆盖内部 400 多个业务岗位,日 PV 达 4 万+,2023 年做数效率提升 25%;一线分拣员的做数时长下降 37%,有效工作时长提升 10%。
七、这套能力还能用在哪
从京东物流的实践看,SpreadJS 可以被理解为一种"让复杂模型留在系统内运行"的能力,帮助企业把预算、利润测算、资金计划、计量检测和风险评估从个人文件变成可管控的应用流程。除物流场景外,其适用场景还包括:
- 预算编制
- 金融指标补录
- 精算模型
- 报价测算
- 库存预测
- 经营指标拆解
结语
京东物流表示,未来还将在性能、稳定性和易用性三个方面持续提升,深耕表格技术在数据领域的应用。对有类似困扰的团队而言,其路径有参考价值:先识别业务中的复杂计算场景,再选择能与现有系统融合的表格技术,逐步把个人文件中的模型转化为系统内可管理的应用流程。