背景

所有业务都会面对“为什么涨、为什么降、原因是什么?”这种简单粗暴又不易定位的业务问题。为了找出数据发生异动的原因,业务人员会通过使用多维查询、dashboard等数据产品锁定问题,再辅助人工分析查找问题原因,这个过程通常需要一天时间。几乎每种业务角色的用户都在做相似的分析,但在业务方分析人员发生工作变动时,分析方法难以得到较好传承。因此我们需要一款自动给出分析结论的智能化数据产品来解决上面的问题,产品的基本功能如图1所示。

图1 产品架构图

由上图可知,指标逻辑树就是我们抽象出来的智能异动分析数据产品的最佳实践。它将固定的分析方法和业务场景抽象出来,套用灵活的数据源(包含Kylin、MySQL、Elasticsearch、Druid等),自动生成符合各类用户的异动分析报告;它能够直接给出分析结论进而快速落实业务行动,降低分析成本和决策周期。选定两个时间周期,指定指标顺序,通过指标逻辑树就可找出导致核心指标发生异动的关键指标,同时可对单一指标进行细分维度拆分,锁定细分维度对整体的影响。

挑战

指标逻辑树作为一款支持酒旅各业务线的异动分析数据产品,面临的挑战如下:

  • 基础指标多、维度多,且来自于不同的数据源。
  • 支持多种异动分析算法。
  • 自定义计算指标。

针对上面的挑战,我们给出如下的解决方案。

解决方案:指标逻辑树

体系架构

图2 指标逻辑树体系架构

如图2所示:

  1. 指标计算,用于解决基础指标多、维度多,且来自于不同数据源的问题以及自定义计算指标的问题;
  2. 分析算法,用于支持多种异动分析算法;
  3. 计算服务,采用master-work的方式解决查询性能的问题。

具体方案

指标计算

指标计算包含指标漏斗、基础指标序列、指标分类,它们之间的关系如图3所示。

图3 指标计算

如图3所示,指标漏斗为用户自定义的有序指标序列,包含基础指标和计算指标(如,B=(L+H)*Y) ;基础指标序列,是将指标漏斗中的计算指标按照顺序拆分之后的指标序列;指标分类采取大圣魔方(可以参考大圣魔方:https://tech.meituan.com/dsmf.html )配置的规则对基础指标进行分类。

分析算法

目前指标逻辑树支持两种异动分析算法,后续可以根据需要进行扩展。

  • 生成瀑布分析图的连环迭代分析法。
  • 根据指标下钻维度方案,生成单个指标解释度的基尼系数算法。

下面分别介绍这两种算法在指标逻辑树中的运用。

连环迭代分析法

连环迭代分析法,用于从用户自定义的有序指标列表中找出导致核心指标发生异动的关键指标,如图4可知,本期结果指标E产生的波动,主要由于A指标的波动影响。

图4 瀑布分析图

图5 指标漏斗

如图5所示,意向UV、访购率、人均单量、连带率、SKU单价等几个指标中的任意一个发生数据波动,都可能引起支付GMV的波动。采用连环迭代分析法,可以确定某个具体指标在本期支付GMV的波动中产生的影响最大。算法公式,支付GMV=意向UV*访购率*人均单量*连带率*SKU单价。

基尼系数

基尼系数A/(A+B),用于计算各下钻维度方案对单个指标波动的影响程度,横轴用特征分组基期累计占比,纵轴用波动值累计占比(可以为负值),基尼系数越大说明该特征对波动的解释效果越好。

图6 基尼系数计算

如图6所示,指标计算,用于获取层级下钻维度中各个维度的基础数据,如各个城市等级的本期、基期值等信息;分析算法,根据维度基础数据计算出排序因子,利用排序之后的排序因子计算各特征分组的基期累积占比及波动值累计占比,进而获取到基尼系数;最终选取基尼系数最大的特征作为最终解释。

计算服务

随着业务分析需求的增加,分析用户自行配置的指标序列以及针对单个指标的下钻维度方案将会急剧增加,随之带来的影响就是单个请求需要支持大量的查询任务,因而提升并行计算能力是提升系统性能的一个关键因素。如图7所示,计算服务包括任务拆分、并行计算和结果合并。

图7 计算服务

任务拆分

任务拆分分为如下几个步骤:

  • 将指标漏斗中的计算指标拆分成基础指标。
  • 填充基础指标的细化维度方案,记录指标的各个维度方案及各方案下的层级下钻维度。
  • 对基础指标按照数据模型和维度方案进行分类。

并行计算

并行计算提供分布式计算功能,主要处理的是任务拆分之后的细粒度查询任务。

查询任务主要有以下两类:

  • 按照数据模型分类之后的指标序列查询任务,需要分别查询本期和基期值,查询量相对较少。
  • 按照数据模型和维度方案分类之后的查询任务,需要分别查询本期和基期值,涉及到细化维度,查询量比较大。

结果合并

结果合并主要是针对计算指标来说的,计算指标是分析用户自定义的针对基础指标的一组计算公式。并行查询的结果是针对基础指标的,需要合并基础指标的查询结果数据,生成符合计算公式的指标数据。结果合并模块需要做两部分的工作,一是解析计算公式,二是根据已有的数据,按照计算公式生成新的数据。

系统中用到数据组装的模块主要有如下:

  • 如图8所示,根据拆分之后的基础指标数据,生成满足计算公式的计算指标数据。
  • 如图9所示,根据拆分之后的下钻维度基础数据,分别计算出各个维度的数据,生成符合计算公式的下钻维度数据。

图8 计算指标数据组装

图9 指标下钻维度数据组装

总结

指标逻辑树在美团点评酒店旅游各业务线中已经得到了一定的应用,并收获了大量好评。本文只是指标逻辑树的一个总纲,目前产品尚处于初级阶段,后续还有很多功能需要完善。

招聘

最后插播一个招聘广告,有对数据产品工具开发感兴趣的可以发邮件给 fuyishan@meituan.com