整天看用户埋点数据,知道数据是咋来的吗?

简介:

我们平时看到的报表复杂而多样,能够通过多种纬度的数据评估用户的使用习惯和对应功能的价值。然而这些报表是如何产生的呢?今天咱们就看看上报数据一步一步变成报表的大致流程。

所有上报的数据都是为了记录一次事件的发生或者描述一个状态,具体的上报数据可以设计为KEY-VALUE的形式或者数据组合的形式。KEY- VALUE的形式主要用来统计简单的计数类上报,如按钮点击的次数,某个选项的值等,KEY用来区分不同的事件,VALUE代表事件发生的次数、状态值等;数据组合的主要用来描述一个事件或者状态需要多种属性描述的场景,比如下载成功事件,描述这个事件的数据组合可能包括对应的下载地址、下载渠道来源、下载耗时等信息。

当上报数据设计好后,后续的工作才能正常开展。下面一步一步说。

1、埋点

所谓「埋点」,就是在正常的功能逻辑中添加统计逻辑。拿统计微信右上角「+」的点击次数为例,上报的数据可以采用KEY-VALUE形式,我们定义 KEY为「CLICK_ADD_BTN」,VALUE的值为点击的次数。当用户点击「+」时,展示菜单的代码会通过按钮的「回调」(详见《聊聊同步、异步和回调》)来触发执行,程序猿在业务代码执行完后,又加上了统计代码,把「CLICK_ADD_BTN」对应的VALUE加1,「+」被统计到了一次使用。

2、上报

并不是每统计到一次事件或者状态就会发起数据上报,客户端统计到的数据会先暂时存储在内存或者磁盘上,当用户启动、退出应用程序的时候,或者在其他更合适的时机,将当前周期统计到的事件批量上报到服务器,这样做的目的主要是考虑到与服务器多次建立连接的性能损耗(详见《不得不知的TCP和UDP》) 和流量问题(相同大小的数据分多次发送比一次发送要消耗更多流量),另外客户端在上报具体的统计事件之外,还会将标识用户的ID一并上报,后续用于计算用户相关的数据如日使用用户和留存率等。

3、后台记录日志

数据上报到服务器后,服务器会将客户端上报的原始数据存储到服务器的磁盘中。一般来说,非强实时性的数据上报到服务器后,并不会立即参与计算,获得最终的统计结果,比如一个功能的日使用次数,日用户数,日留存等数据,而是等到服务器负载较低的时间段利用预先配置的计划任务进行离线处理。这样处理的目的是为了节约服务器资源(钱),因为大家肯定不想因为计算统计数据而影响实时业务的处理效率。

4、计算&入库

整天看用户埋点数据,知道数据是咋来的吗?

报表中展示的数据,并不是客户端上报的原始数据,比如「+」的使用次数、使用用户数、日留存率这三组数据,都是通过对客户端上报的「CLICK_ADD_BTN」对应VALUE值的累加并结合上报用户ID二次计算得出的。

如果我们的产品达到微信这种日登陆数五六亿,那么每天上报的统计数据将是海量的,为了从这种海量的数据中计算出「+」的使用次数、使用用户数等信息,就需要用到「数据仓库工具」,比如当下流行的Hive处理工具,它基于Hadoop分布式系统基础框架,利用计算机集群的能力进行分布式计算。当「数据仓库工具」计算出最终的结果后,计划任务会将结果(「+」的日使用次数、日使用用户数等数据)保存到数据库中,也就是「入库」过程。「入库」后的数据才能与前端对接,组成报表展示系统。

一般情况下,原始数据经过数据仓库工具处理后,对应的日志文件还会在服务器上保留一段时间(一般3~7天),以便追溯统计问题,所以,如果发现统计数据有问题问题,一定要及时反馈给负责的程序猿,否则就会「死」无对证咯。

5、展示

当数据「入库」后,报表的展示就水到渠成了。报表系统通过前端页面用户的输入获取查询条件,然后通过后台数据库查询获得结果,在前端展示出来。

这里只是简述了埋点数据上报、统计的大致流程,每个过程中还有很多细节要解决,如后台日志乱码问题、客户端异常导致数据丢失等。一旦数据出现问题,经常需要联系各方人员定位原因。在此呼吁广大的产品大虾一定要关心、爱护为你做统计需求的程序猿,他们上辈子都是偷了蟠桃的孙悟空。

对咯,今天别忘了看报表哦。


本文作者:佚名

来源:51CTO

相关文章
|
2月前
|
测试技术 应用服务中间件 Shell
给你的系统做好埋点
给你的系统做好埋点
16 0
|
9月前
|
缓存 Linux Docker
二十六、案例篇:如何找出狂打日志的“内鬼”?
二十六、案例篇:如何找出狂打日志的“内鬼”?
68 0
|
9月前
|
存储 安全 前端开发
PHP语言开发的医院不良事件上报系统源码
本套不良事件报告系统源码包括护理相关事件、医疗相关事件、药件相关事件、设备相关事件、院感相关事件、输血相关事件、医技相关事件、安保后勤事件、信息相关事件、其他事件(费用、窗口服务)等10大类事件,可根据医院需求自定义扩展事件类型
PHP语言开发的医院不良事件上报系统源码
|
安全 BI
不良事件上报系统源码,医院不良事件管理系统源码
技术架构:前后端分离,仓储模式,BS架构,有演示,已在多家医院完美运营。 相关技术:PHP+vscode+vue2+element+laravel8+mysql5.7 覆盖了医院内部所有不良事件种类的上报,包括医疗、药品、护理、设备、院感、输血、医技、安保后勤、信息等。同时是对各类医院安全不良事件进行分类统计,系统采用大量的预设项,提升报告效率。实现对不良事件的有效监营和控制。
不良事件上报系统源码,医院不良事件管理系统源码
|
监控 搜索推荐 数据挖掘
如何使用海关数据准确开发到客户
海关数据其实一直是外贸应用中最广泛的开发渠道,而且特别利好初学者,是企业开发新客户、监控同行、维护老客户以及决策参考的商战利器。当然,想通过海关数据精确找到客户,需要熟悉以下操作技巧。
151 0
相亲软件开发,与用户留存息息相关的系统状态
相亲软件开发,与用户留存息息相关的系统状态
|
移动开发 算法 小程序
浅谈数据埋点可行性方案 [ 新年快乐,心想事成]
埋点服务的数据库的数据量,根据APP的用户量成指数级别成正比。如果需要的话,可以采用分库分表。
217 0
|
Android开发 iOS开发
做好相亲app开发,必不可少的消息功能
做好相亲app开发,必不可少的消息功能
|
监控 定位技术
老司机教你分析日志:分析用户的地理位置信息
地理位置的需求 通常我们分析用户的需求,了解到用户当前位置在哪里非常重要,例如,可以根据用户的地理位置,针对性的推广本地广告。 通常,我们可以在客户端获取定位权限来获取GPS信息。但是如果用户关闭了定位呢?如何获取呢?我们还有另外一种方法,就是通过用户当前的IP来定位。
4062 0
|
存储 消息中间件 数据采集
婚恋app源码开发,监控系统数据的基本流程
数据存储以后,就可以进行数据分析和展示了,婚恋app源码可以将获得的监控数据以图形界面的形式展示,技术人员根据展示的数据进行相关分析。