数据业务札记05:全量结果增量覆盖
在业务中,我们常要基于全量历史结果来计算得出所需的结果,如:最早时间,最新时间,历史峰值等。正常逻辑我们会获取用户的全量历史数据来进行聚合计算得到最后所需的结果。
但如果用户人数多(千万、亿级),历史数据多(年),计算频率大(日度、小时),则无法用全量历史数据来进行聚合,因为这种计算逻辑会消耗很多时间和计算资源。那么对于这种场景,我们需要如何兼顾计算效率和计算结果呢?
其中一种可行的方式是用“增量”逻辑来更新数据。何谓“增量”逻辑?增量逻辑就是在计算初始日,先基于用户的全量历史数据,计算一次所需指标(最早时间,最新时间,历史峰值)此处命名为x0之后时间每向前滚动一个单位(小时、天),我们取新的时间单位下用户的数据,聚合出当天的指标x1,之后比较x1和x0的大小关系,来对x0进行更新。这种方法下,我们仅需要使用全量数据计算一遍,后续仅需要使用用户一天的数据与全量历史指标进行比对即可,相比而言,这种方案会大大节省计算资源和计算时间。
为了让上述表述更加清晰,大家可以结合下图来对比理解理解。
此处还可以简单介绍一下数据更新的逻辑,其实很简单,只需要用前一天计算好的结果表和今日计算好的结果表进行关联,使用结合两个表相应指标使用case when来进行重新定义即可。
上述描述可能会有抽象的部分,如果大家有疑问欢迎在评论区留言,大家一起探讨,一起进步。