著做权归做者全部。商业转载请联系 Scott 得到受权,非商业转载请注明出处[务必保留全文,勿作删减]。
数据只有被看见,真相才浮出水面,数据跳动在大盘,洞察才造成预判。
今天 2020/1/7,到小菜整整 2 年半,看到团队在数据报表量产和可视化上面有了新的成果,这些年来也了解到前端后端面对不可胜数的数据报表和后台可视化大盘,真心苦不堪言,就趁这个节点,跟你们聊聊两年半来咱们是如何从前端来驱动数据报表量产和可视化大盘的技术探索。前端
首先上结论:git
简而言之,先推进技术团队把数据仓库建设到基本成熟,再来基于 Metabase 魔改出本身的报表和可视化业务后台,这是一个可取的套路,得出这个结论,是由于两年半的探索咱们有斩获也有疼痛的教训。github
固然一路自研过来,咱们也调研了不少方案,不管是商业付费仍是开源,对第三方可替代竞品的选择标准以下:web
阅读两篇旧文,有助于你们理解下文:面试
无论是 toB 仍是 toC 的公司,不管是 +互联网仍是互联网+,都对数据报表有着近乎疯狂的依赖,这不只仅是像马老师说的咱们正在进入 DT 时代,数据运营甚至数据智能价值挖掘和应用愈来愈普及,而是对于任何一家高速迭代的互联网公司,在产业互联网的大背景下,在中早期各类红利逐渐消逝的前提下,基于数据的成本意识和精细化运营能力愈来愈考验一家公司在所谓寒冬活下去的实力。redis
业务现场无时无刻都在产生着数据,经过什么途径观测业财健康直接决定一个公司/一条业务线的顶层决策,顶层决策有何等重要,促成决策的数据报表就有多重要,因此一个公司只要上了信息化系统,数据报表都会成为绝对刚需。算法
基于这个刚需,有的公司招专门的 BI 工程师,组建算法团队甚至大数据团队,有的则是业务方直接把要看的字段丢给开发团队,让先后端工程师,一个写跨库跨表的 SQL API,一个写能筛选日期和排序的 DataTable 页面。数据库
显然小菜早期,就是以 SQL -> API -> DataTable 的流程开发报表,效率极低,成就感极弱,先后端成长极慢,带来的影响有不少,好比工程师更不稳定,好比业务决策等待的周期更长,好比报表的零散维护出错率更高...小程序
启动数据报表是在 2017 年 7 月份,届时市面上尚未较为成熟的开源方案可选,包括目前的 Metabase,调研无果后,咱们选择了纯自研,目标是让产品经理/后端开发能够快速在线制做报表并渲染出来。
**
方式是参考数据仓库业务表的文档,在系统上快速的定义报表列的中文名称以及对应的库表字段的查询(好比产品经理能够不借助开发资源,自行查询销售的周市调次数和周我的交易单量这样的简单报表),因为是取代运营本地人肉的 “搭表格”,所以这个系统取名叫作 “大表哥”,它的技术栈的进化以下:后端
功能清单:
技术栈缺点:
产品交互易用性:
功能清单:
技术栈缺点:
产品交互易用性:总体的产品设计较粗糙,菜单管理权限管理粗暴,维护成本较高,导出功能不稳定
功能清单:
技术栈缺点:
产品交互易用性:
报表制做后台,能够跨库跨表的查询数仓的数据,自由度很高:
报表展现页面,自动关联各类筛选组件,加强报表的检索功能:
启动可视化大盘是在 2019 年 1 月份,届时销售征战四海,业务遍及全国各地,须要有一些更宏观、更易于理解、更易于诊断和决策的视角来看时间线上的业务财务变化,以及跟进地面部队的 KPI 完成状况,就启动了数据大盘这个项目,由于它须要有很强的定制性(好比更改 KPI 和录入新指标等),并且比较紧急,除了付费用阿里云 DataV 作一些过渡外,就在大表哥的基础上启动了数据大盘的开发,让它能够直接长在数据报表之上,技术栈状况以下:
功能清单:
技术栈缺点:
产品交互易用性:编排流程复盘,须要定时触发任务加工数据,编辑体验和调试体验很差,可视化的大盘性能很差
除了传统的饼图柱状图二维表等等,也有偏定制的跟踪 KPI 的录入式卡片集:
启动 Metabase 是在 2019 年 7 月份,届时 Metabase 趋于稳定,公司的数据仓库建设也更加成熟稳定,能够面向 BI 团队接收需求来开发一张张业务宽表,具有了可快速查询的条件。
另外需求也有变化,更多端的报表及可视化的透出需求愈来愈多,好比透出到钉钉 H5 上,内部的 App webview 内,PC 中后台的系统中,甚至是客户的微信 H5 帐户主页上,就启动了这一次的探索:基于 Metabase 来魔改报表及图表的拼装流程,公司本身登录系统/权限系统的集成,与原来的大表哥作融合升级抽离微服务等等,基于这么多可视化大盘的需求,咱们把这个通过魔改的 Metabase 更名叫 “大盘子”,它的技术栈状况以下:
功能清单:
技术栈缺点:
产品交互易用性:
功能清单:
网页版的报表编辑器和展现工具,具有量产数据报表和可视化搭建图表的能力。
基于 Metabase 魔改的系统,具有数据报表和图表搭建的全链路生产与应用能力。
大表哥,更偏工具属性,它的生产链路是从一份报表的需求提交开始,好比想要一个报表,看全部门店昨日成交 总单数、GMV...假如门店业务的 10 个表头业务字段也定义好了,接下来 PD/开发 进场:
从制做到展现,到透出到移动端,整个报表链路是闭环的,可是也有不足和缺陷:
大盘子,虽然也是工具属性,但因为它是站在了数仓宽表基础设施完善的基础上,因此针对单表(可额外 Join 一张表)的数据聚合、组合和图表编排能力更完整,它的主流程以下:
显然大盘子的链路更短,并且能够被 webview 嵌入,能够充分利用浏览器能力,它的发布效率更高,特别是 Bug 修复和大盘具有迭代的时候,但大盘子的报表导出性能不高,同时对于偏录入式的可视化组件支持不够,以及 webview 自身的加载性能问题。
你们若是对比上面三波探索的功能点,会发现这个公式:
大表哥(自研) + 大表哥可视化(自研) ≈ 大盘子(半自研)
也就是咱们辛辛苦苦迭代了 2 年的的数据报表和可视化的成果,也就能顶上开发半年的 Metabase 的成果,WTF...
若是让咱们从新回到 2017 年,咱们必定会作以下的选择,来避开两段弯路:
提到价值,就必定是这套技术解决方案给公司带来的价值,在对它门复盘时候咱们是这样评估的:
因此这个价值是一个递进关系的价值,在不一样的阶段发挥能力,但不能否认,咱们整个报表体系化建设中,的的确确走了弯路,多浪费了几个月的时间,半自研的启动其实能够更早更果断一些。
最后你们若是要作独立的报表系统,或者长出大盘可视化的能力,咱们的建议依然是:
基于前面的三波探索,咱们目前明确的方向是,把大盘子和大表哥作融合,制做二维表/图表/编排大盘的能力都给到大盘子,数仓未建设到位的零碎报表展现由大表哥接管(会被逐步弱化但难以替代,由于高频的小报表需求是层出不穷的),同时 PC 端的大盘展现一概接入大表哥作展现,在大盘子和大表哥的背后,抽离链接数仓和其余 API 的能力,封装成微服务,同时供给大表哥和大盘子使用,以及将大表哥的导出服务也贡献给大盘子用,简而言之,大盘子上面制做,大表哥上面看,要透出到多端的时候,一概来嵌大盘子的大盘 URL 或者组件 SDK。
Scott 近两年不管是面试仍是线下线上的技术分享,遇到许许多多前端同窗,因为团队缘由,我的缘由,职业成长,技术方向,甚至家庭等等缘由,在理想国与现实之间,在放弃与坚守之间,摇摆不停,心酸硬扛,你们能够找我聊聊南聊聊北,对工程师的宿命有更多的了解,有更多的看见与听见,Scott 微信: codingdream,也能够来 关注 Scott 语雀跟进最新动态,本文未经许可不准转载,得到许可请联系 Scott,不然在公众号上直接转载,尤为是裁剪内容后转载,我都会直接进行投诉处理。