日常运营数据统计实践

日常运营需要大量的数据用作业务分析以及决策,涉及的指标众多,最常见的指标类似销售的环比和同比。我们常用来计算环比和同比的公式如下:

环比增长率 =(当前周期数 - 上一周期数)/ 上一周期数 * 100%
同比增长率 =(当前周期数 - 历史同期数)/ 历史同期数 * 100%

从以上公式可以看出,两个指标的计算需要知道当前周期数据、上一周期数据以及历史同期数。我们以月的维度来简单阐述下三个指标:当前周期的数据=当月1号至今的累计数据、上一周期数据=上月相同天数累计数据、历史同期数据=上一年同一月相同天数累计数据。如果是完整月份,则为两个满月的对比(注意存在大小月)。

上面描述的概念性的东西,相信大家都已经明白。下面进入本期主要内容,环比同比指标统计的实现设计。从上面的概念描述,我们可以概况性的看到,其实当前周期数、环比和同比的共通点是,均为时间范围内的数据统计,差异点是统计数据时间范围的不同。由此,我们设计了以下的时间范围R表来描述需求,以周月为例。

统计时间

类型

当前周期开始时间

当前周期结束时间

环比同期开始时间

环比周期结束时间

同比周期开始时间

环比周期结束时间

2020-10-02

2020-09-28

2020-10-02

2020-09-21

2020-09-25

2019-09-30

2019-10-04

2020-10-02

2020-10-01

2020-10-02

2020-09-01

2020-09-02

2019-10-01

2019-10-02

有了以上时间范围表,我们需要做的则是将业务数据根据不同的时间范围打宽,并且根据需求汇总。举实际栗子说明,我们有以下数据,需要汇总统计本周以及本月的累计数量。业务数据S表如下:

业务时间

业务编号

数量

2020-09-28

0000092201

50

2020-10-01

0000100101

100

2020-10-01

0000100102

200

2020-10-02

0000100201

80

2020-10-02

0000100202

60

……

……

……

……

……

……

结合统计时间范围R表,我们可方便的统计当前周期、环比和同比的累计数量,当前周期累计数量参考以下脚本,环比和同比累计数量可类似统计。

Select R.统计时间,
R.类型,
SUM(S.数量) AS 当前周期数量
FROM R LEFT JOIN S ON 1=1
Where R.统计时间=今日 
AND S.业务时间 between R.当前周期开始时间 to R.当前周期结束时间 
GROUP BY R.统计时间,R.类型

数据统计完成后的下一步是呈现。在实际应用中,数据会达到亿级,为了提高读取性能,减少库表的关联聚合等操作,我们可将数据按如下库表设计存储,从实际应用场景统计,可满足90%以上的数据展示需求。

统计时间

类型

当前周期数据

环比周期数量

同比周期数量

2020-10-02

 

 

 

2020-10-02

 

 

 

回顾一下,以上描述的环比和同比数据统计思路,我们首先为批量业务数据打上相应的标记位,接着根据标志位做需求维度的汇总计算,最后按照大宽表的格式存储统计结果。数据标志位的思想,在一定程度上简化了数据统计思路,优雅的解决日常一些数据统计问题。

作者:江沛

猜你喜欢

转载自blog.csdn.net/vipshop_fin_dev/article/details/108953779