构建饿了么销售端与商家端的数据分析服务

Posted by Alexander Wang on December 16, 2017

构建饿了么销售端与商家端的数据分析服务

前介

今年8月,销售侧需要开始进行数据作战,我在支援销售侧业务的时候发现数据分析服务现状比较低效&不准,便和leader谈了我的想法与设计,自动请缨干这个事情,最后和总监过下方案,做一个通用的数据服务出来。这个项目我组了个小团队做到11月份,因为组织架构变更问题与领域拆分,业务移交到其他组。年底总结,写下此文,记下当时做事的思路与历程。

现状

每一个数据分析页面的需求过来,都需要经历开发在数据仓库中聚合各种数据推到mysql,在写接口读mysql数据。然后前后端联调,测试验收。

存在两个问题:1.重复开发;2.数据口径不一致;3.每次都新写代码,代码越多bug越多,数据测试也不过关。

需求收集

销售侧各个层级的经理与销售人员需要看其销售数据,基本需求如下:

查看维度:组织架构、BD、店铺、网格

时间维度:昨天、前天、最近一周、上周、本月、上月、最近30天、前30天

业务筛选聚合维度:店铺的各种标签

面临问题

需求多——数据作战是重点

数据量大,算60天订单,sum类聚合运算需提前算好

标签组合太多

解决办法

分析产品重点

与产品确认好聚合维度,固定住可以不变的

各种标签筛选、排序、算商户数都可以支持

技术方案

与ER建模方法不同,数据建模不以实体为要,以维度为核心,进行维度建模。

1.根据业务定好维度,设计星形模型(即维度模型),做到算的快可复用

2.针对服务层做语义化接口,类似于ES client API。

如何去做

先搭框架

以订单管理的需求,在一个迭代先将以下部分搭起来并上线。

  • 大数据部分计算的框架
  • 语义化查询服务

小步迭代

  • 数据迭代增加聚合维度与标签
  • 迁移旧的数据表
  • ES搜索
  • 优化计算时间(BigTable思想,空间换时间)
  • 优化推送时间(拆任务、SLA)

未完成部分

数据看板配置化

解释:通过配置即可看到各种数据面板

实现:语义化接口之上增加:配置服务、图表渲染引擎(基于可视化编码的图形语法)

G2:蚂蚁开源,上手简单

ECharts:百度开源已久,bug修的差不多了

Data-Driven Documents:D3是图形化top级项目,更强大但是学习曲线陡。

数据产品配置化

解释:对于数据的各种产品花样,可以通过配置完成,包括从取数逻辑到渲染。数据看板配置化是其真子集。

实现:上述基础上,与arena.layout结合,每种图表都是Module,服务端控制。做到数据面板千人千面。(此处当申请专利)

总结

业务压力大,技术难度不算大,做好需要好的视野。


Creative Commons License
This work is licensed under a CC A-S 4.0 International License.