今天学习到了大数据埋点,之前没有接触过。
1 。什么是埋点
埋点,就是为了统计用户行为等数据,而在代码中埋入相关代码,以实现统计功能。
目的:统计用户行为
在移动互联网时代,产生了无数个应用程序APP,了解用户的兴趣爱好、用户的行为、APP的性能。埋点对于产品的精细化运营有很大帮助。 个性化推荐的实现大概就是这么来的?
比如资讯类APP,通过上报的用户属性,定向推荐千人千面的资讯。
在实现埋点功能的时候,需要客户端开发工程师/前端工程师,根据产品经理的需求,将定义的行为抽象为一类事件(埋什么点),在用户操作的时候记录数据(采集时机),在考虑性能影响、用户流量使用情况等因素后上报到服务器(上报时机)。 一般会开发成“统计SDK”,需要完成数据采集、数据上报、数据对账、删除旧数据等功能。
tip:埋什么点,采集时机,上报时机
例子:比如为了统计每天有多少人使用APP,可以将“启动APP”定义为事件,在用户启动APP时实时上报到服务器。 埋的点就是“启动APP”
2 。埋点的几种技术方案
根据埋点的发展和自动化程度,可以分为3类:
- 全手动埋点(代码埋点)
- 可视化埋点
- 无埋点(全埋点)
(1)代码埋点
在埋点发展的初期,工程师针对每一个产品需求,在代码中实现相关埋点功能。 码就完事了
(2)可视化埋点
如果产品经理想要自己进行一些埋点,全手动埋点的方式就不太适用了,这个时候发展出“可视化埋点”的方式,对页面的可见信息进行操作,然后埋点。有一些平台称为“圈选埋点”。
(3)无埋点(全埋点)
有一些平台(比如神策、GrowingIO)认为全手动埋点对开发工作量太大,所以对页面和页面的元素设置“监听器”来实现数据的采集,代替工程师来埋点,也称为“无埋点”。
3。 埋点设计流程和原则
埋点就是将需要的信息采集和上报,那么需要采集什么数据呢?
就是产品运营经理根据指标体系和产品实际使用情况而梳理出的需求。用户的行为等数据,在埋点中称为“事件”。对于工程师来说,会进行适当的抽象,将类似的事件抽象为同一类事件。
埋点设计的一般流程:
产品经理提出需求--
数据分析师设计埋点方案--
开发工程师实现埋点--
测试人员进行测试--
产品经理和数据分析师进行验收。
数据分析师可以使用Excel梳理出《埋点设计方案》交付给开发工程师。埋点采集的具体数据,可以参考5W2H原则,详细的记录行为发生时的所有信息:
- Who:谁产生的事件,一般是用户ID,字段可以设计成user_id。
- When:什么时候发生的,一般是客户端时间client_time。
- Where:什么地方发生的,一般是页面page_id。
- What:发生了什么事件,比如启动APP、点击按钮、页面显示等等事件。
- Why:为什么发生,一般不能获取,省略。
- How:如何发生的,比如启动的方式、点击按钮的类型等等。
- How much:发生了多少次,比如启动时长。
埋点设计方案还需要包括:
每个字段的英文标识、中文含义、采集时机、上报时机、字段类型、字段取值范围、备注。
关于页面、卡片的处理:可以处理成层级关系,页面--页面包含卡片--卡片包含商品等内容。
4 埋点设计案例 (重要参考)
以最常用的购物APP淘宝为例,简单的实操一下。
需求分析
产品运营经理会搭建出指标体系,可以参考人货场的业务分析模型,对用户、商品、资源坑位进行相应的分析;再根据产品UI和实际使用流程,梳理出《埋点设计需求》。
本次的案例简化流程,埋点仅包括:用户启动/退出APP、页面显示、卡片曝光/点击、商品曝光/点击、点击底部TAB、点击店铺/客服/收藏/加入购物车/立即购买等按钮。
埋点设计方案
数据埋点设计方案
(1)启动/退出APP:
Who:手机imei、user_id。
When:客户端时间client_time。
Where:客户端IP、GPS位置、网络类型network_type。
What:发生的事件event(launch、exit)。
Why:为什么发生,省略。
How:启动方式launch_method(主屏幕/Push/三方跳转)。
How much:启动时长duration。
其他信息:机型model、应用版本app_version、会话session_id。
页面显示:
有很多页面,可以抽象为同一个事件,再用page_id区分。比如点击底部TAB进入的页面、今日爆款/天猫超市/充值中心等页面、商品详情页。
- Who:手机imei、用户ID user_id、页面ID page_id、前页面ID pre_page_id、页面类型page_type。
- When:客户端时间client_time。
- Where:客户端IP、GPS位置、网络类型network_type。
- What:发生的事件event(page_show)。
- Why:为什么发生,省略。
- How:启动方式launch_method(主屏幕/Push/三方跳转)。
- How much:略。
- 其他信息:机型model、应用版本app_version、会话session_id、加载耗时duration。
注意,为了统计页面的来源去向,可以加上字段:前一个页面pre_page_id。
卡片曝光:
5W2H的大体内容同上面的事件,该事件的特殊字段有:
- Who:页面ID page_id、页面类型page_type、卡片ID card_id、卡片类型card_type;
- What:发生的事件event(card_explode)。
- Where:卡片位置card_position(卡片相对于整个页面的位置)、卡片序号card_num(该卡片相对于当前卡片组是第几个卡片)
注意,事件发生时的信息,页面ID、卡片ID根据实际情况,一般都会上报。
卡片点击:
5W2H的大体内容同上面的事件,该事件的特殊字段有:
- What:发生的事件event(card_click)。
商品曝光:
5W2H的大体内容同上面的事件,该事件的特殊字段有:
- Who:商品ID product_id、页面ID page_id、页面类型page_type、卡片ID card_id、卡片类型card_type;
- What:发生的事件event(product_explode)。
注意,商品名称、商品价格、商品分类,可以上报,也可以在数仓环节中处理,通过匹配商品信息表得到。
商品点击:
5W2H的大体内容同上面的事件,该事件的特殊字段有:
- Who:商品ID product_id、页面ID page_id、页面类型page_type、卡片ID card_id、卡片类型card_type;
- What:发生的事件event(product_click)。
其他事件:
点击一类事件的上报内容,大体差不多,不再赘述。
5 一些其他问题
1 分别设计单个事件 VS 抽象为同一类
比如商品详情页的底部有5个固定的按钮:店铺、客服、收藏、加入购物车、立即购买,点击这些按钮应该设计为5个事件,还是统一都设计为一个事件再加字段去区分?
其实是从实现上来看,都可以的。需要多对比优点缺点,要根据实际情况去处理。方便了产品经理的理解?还是减少了工程师的开发量?还是优化了数仓的清洗?
2 性能 VS 全部上报
一个页面上有那么多元素,都需要采集?设置中有那么多选项,都需要上报?有几亿的用户量,所有事件都需要实时上报?
需要在用户体验、开发工作量、分析完备性等因素中综合考量。
参考链接:大数据之数据埋点 - 知乎 (zhihu.com)
https://zhuanlan.zhihu.com/p/540598349