我们平时看到的报表复杂而多样,能够通过多种纬度的数据评估用户的使用习惯和对应功能的价值。然而这些报表是如何产生的呢?今天咱们就看看上报数据一步一步变成报表的大致流程。
所有上报的数据都是为了记录一次事件的发生或者描述一个状态,具体的上报数据可以设计为KEY-VALUE的形式或者数据组合的形式。KEY-VALUE的形式主要用来统计简单的计数类上报,如按钮点击的次数,某个选项的值等,KEY用来区分不同的事件,VALUE代表事件发生的次数、状态值等;数据组合的主要用来描述一个事件或者状态需要多种属性描述的场景,比如下载成功事件,描述这个事件的数据组合可能包括对应的下载地址、下载渠道来源、下载耗时等信息。
当上报数据设计好后,后续的工作才能正常开展。下面一步一步说。
1、埋点
所谓「埋点」,就是在正常的功能逻辑中添加统计逻辑。拿统计微信右上角「 」的点击次数为例,上报的数据可以采用KEY-VALUE形式,我们定义KEY为「CLICK_ADD_BTN」,VALUE的值为点击的次数。当用户点击「 」时,展示菜单的代码会通过按钮的「回调」(详见《聊聊同步、异步和回调》)来触发执行,程序猿在业务代码执行完后,又加上了统计代码,把「CLICK_ADD_BTN」对应的VALUE加1,「 」被统计到了一次使用。
2、上报
并不是每统计到一次事件或者状态就会发起数据上报,客户端统计到的数据会先暂时存储在内存或者磁盘上,当用户启动、退出应用程序的时候,或者在其他更合适的时机,将当前周期统计到的事件批量上报到服务器,这样做的目的主要是考虑到与服务器多次建立连接的性能损耗(详见《不得不知的TCP和UDP》)和流量问题(相同大小的数据分多次发送比一次发送要消耗更多流量),另外客户端在上报具体的统计事件之外,还会将标识用户的ID一并上报,后续用于计算用户相关的数据如日使用用户和留存率等。
3、后台记录日志
数据上报到服务器后,服务器会将客户端上报的原始数据存储到服务器的磁盘中。一般来说,非强实时性的数据上报到服务器后,并不会立即参与计算,获得最终的统计结果,比如一个功能的日使用次数,日用户数,日留存等数据,而是等到服务器负载较低的时间段利用预先配置的计划任务进行离线处理。这样处理的目的是为了节约服务器资源(钱),因为大家肯定不想因为计算统计数据而影响实时业务的处理效率。
小编推荐阅读深度详解王者荣耀深渊王者段位要求(从细节到实战,解析深渊王者段位升级技巧攻略)
阅读《明日方舟》最强先锋干员推荐指南(打造最强先锋战队,从干员推荐到培养全解析)
阅读《魔兽世界》怀旧服技巧指南大全(挑战圣光的召唤任务,为部落联盟赢取荣誉)
阅读探寻江湖中的宝藏——寻找《烟雨江湖》西子君剑线索的攻略技巧最新(游戏中怎样获得西子君剑线索?)
阅读星露谷物语下水道屏障破解攻略技巧指南(助你轻松突破下水道难关,快速获得丰厚奖励)
阅读《燃烧意志路奇加点攻略技巧指南》(航海王游戏中路奇如何加点,最新推荐汇总)
阅读王者荣耀史诗皮肤卡意思一览大全(探索王者荣耀史诗皮肤的故事,了解背后的涵义)
阅读《重返深渊锁镰》武器攻略大全最新(每把武器攻略,助你通关游戏)
阅读《DNF》游戏牛郎星的光辉快速获得攻略技巧(跨越星际尽享荣耀)
阅读探秘梦幻模拟战手游雾风的技能属性攻略(雾风技能解析,让你成为游戏中的绝佳战士)
阅读怎样选择合适的门派成为《我的侠客》游戏高手?(掌握门派特点,选择最佳武功路线)
阅读