多个事实发生时间之间的异步性:
一个件事通常在一件事发生后一段时间,才会发生,或者才会被观测到。例如订单退款必须在下单支付之后才能发生;退房必须在入住酒店之后才能发生,且存在着一定的时间差。
事实发生与指标计算之间的异步性:
一个事实发生与这个事实被计算(为指标)之间通常存在着时间差。例如,一个消费者1分钟内在APP上(生产环境下)下了20笔订单。但可能在1个小时后,才能在后台数据库中查询到这20笔增量的订单记录。这种情况的发生可能是由于任务调度的设置导致的,也可能是由于技术能力的限制导致的。再举个例子,应该几个月前,知乎在创作中心中统计的阅读量还是日频刷新的。现在也仅仅做到了小时刷新。这样的刷新频次可能在“创作中心”的业务场景下是可接受的,但在很多其他的业务场景下(例如短视频推荐),是不可接受的。为了解决以上业务场景的问题,我们就需要采取流计算的技术,来提高数据生产的时效性。
T+n中的n应该设置为什么更为合适,是1天、3天还是5天;1小时、2小时还是5分钟。举个例子,保险公司要衡量保单的品质,即有没有卖给消费者他们所需要的产品。那么用什么指标来衡量更为合适呢?大家可能会想到“退保率”。但是退保率该如何计算呢?严格来说,一笔保单在其合同约定的期限内的任意一天都是可以退保的。所以,从完全准确的角度出发,如果某个保险产品的合同期为20年,那么应该统计20年零1天前所有保单的退款率,即T+20y。但是,这显然是不现实的。因为“及时性”太差了,完全不可运营。因此,我们要设计一个更恰当的时间特征n。假设,现在我们知道保险的犹豫期大约是10~15天,也许在平衡“及时性”与“准确性”之后,退款率的设计就会是“T+15d”计算。
我们在计算相对指标的时候,应该以什么样的方式进行对比?举个例子,运营常用的流程分析,AAARR(获取、激活、留存、收益、传播)。通常使用这套方法去做运营分析,就要计算激活率、留存率、消费转化率等等一系列的指标。如果我们要计算这类指标就存在一个选择,是使用时间切片的方式去计算激活率吗?即:今日的激活率 = 今天获取的用户量 / 今天激活的用户量。但是思考一下:今天激活的用户中,有没有昨天获取的用户呢?有没有前天获取的用户呢?有没有去年获取的用户呢?显然是有的。而我们在使用切片数据时,就可能导致一个现象,今天的激活率高,可能仅仅是因为今天获取的用户数少,而今天激活的用户都是之前积累下来的。也就是说,有可能转化率高,是件坏事。那么,是不是为了准确性,就用关联绑定的方式去设计指标呢?即,计算激活率的时候,应该圈定某天获取的那些用户,看这些用户中有多少激活了。例如,今天计算“T+7d ”前获取的用户中的激活率是多少。如果采取这样的方式,我们就回到了问题1:“n”应该如何选择。
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack