关于作者:我是水大人,资深潜水员,一个基于开发、面向分析、走向全栈的饱经摧残的数据新手,爱折腾不爱玩,爱总结爱思考的老兵,错了改改了又错的惯犯。
在上节中我们介绍了埋点设计时四种主要思维方式,本节我们挑选典型的疑难埋点场景进行埋点设计。通过本节的阅读,你将获得以下典型场景埋点设计的认知:
刷新流又称服务流,是在新闻资讯类APP中常见的交互形式,随着用户不断的滑动,内容不听的更新,根据刷新的方式有分为全部刷新和增量刷新,而增量刷新有时候在页面的顶部,有时在页面的底部。对于刷新流埋点我们要终端关注上报的数据信息和上报时机。
上报数据:
上报时机:
曝光事件的处理是埋点设计中最难的部分,其中尤以上报时机和上报格式最为考研埋点设计人员的能力,下面结合给出作者的经验设计。
曝光上报的一个基本原则是用户可见(离开之后再次可见算二次曝光),上报时机有以下几种处理方式:
简单式:
离开页面的时候上报所有已曝光过的内容,但可能出现的问题对于刷新流的内容形式,一次上报的内容可能超出了限制,造成数据丢失。
混合式:
混合式的上报在简单式的离开上报基础上增加了缓存条数的触发上报条件,缓存达到了指定数目之后,则将缓存过的数据进行上报,同时清空缓存等待新的曝光条目加入。
综合起来,在处理曝光事件的上报时机的时候要充分的考虑以下场景:
列表式的曝光常采用多条一起上报的方式,每个条目有共性和个性属性两部分,一般设计如下:
# 公共属性
page:xx
src:xxx
# 个性属性:个性元素之间用‘;’分割,同元素不同属性之间‘,’分割
contentlist:"a=1,b=2,c=3,d=4;a=5,b=6,c=7"
其中对于个性属性的上报,又有以下两种常用的方式(以今日头条新闻推荐tab下的列表项为例):
-- 多源埋点(info:string(json格式)) {
"page":"mp", /*不要求key唯一,高扩展性*/ "contenlits":[
{"type":"娱乐","auth_id":"111","rn":1,"id":"v111"}, {"type":"政治","auth_id":"222","rn":2,"id":"v222"}, {"type":"科技","auth_id":"333","rn":3,"id":"v333"},
],
/*要求key唯一*/ "contentlist2":{
} }
"v111":{"type":"娱乐","auth_id":"111","rn":1}, "v222":{"type":"政治","auth_id":"222","rn":2},
# 内容公共属性
page:mp
# 内容个性属性
contentlist:
"type=娱乐,auth_id=111,rn=1,id=v111; type=政治,auth_id=222,rn=2,id=v222; type=科技,auth_id=333,rn=3,id=v333;"
在处理曝光内容的时候,有以下几点需要提前考虑:
点击埋点的上报时机一般不存在疑问,即点击发生时候或者点击结果返回时上上报,但在处理一些特殊场景的时候合理的制定上报时机,会给后续数据处理带来极大便捷性。典型的使用场景是单页面批量操作,具体如下:
以上两种场景,建议离开当前页的时候上报该页面操作的结果,可 以选择上报所有操作之后的最终态,也可以记录修改态(增什么减什么保留了什么,开什么关什么不变什么)
具有附加信息的点击事件上报,建议单独拿出来,这是因为每个点击对象都导致不一样的结果,而这些 结果有时候又没有共性(有共性的情况下可抽象成一个点击事件)。具体的点击附着场景如下:
对于某些特殊的入口型应用,或者具有丰富内容形态的产品,有很多的交互设计,点击不同的地方,跳转不同的位置,甚至相同的位置,随着后台的配置不同而跳转不同的地方。这种具有丰富的复杂的跳转关系情况下,如果继续采用属性和属性值堆叠的方式,不仅不能很好的体现属性值之间的组合情况,以便测试和其它人员进行针对性的测试,也不利于使用人员快捷的进行点击信息的统计,此时建议采用信息表的方式来设计,其形式如下:
点击区分 | 点击位置 | 跳转区分 | 跳转地址 |
---|---|---|---|
按钮/非按钮等 | 具体的点击位置 | 应用自身/第三方等 | 具体的跳转目标 |
说明:
联动是指显性的某些操作引起其它地方状态改变的一些关联变动(而这些变动同样可有其它的显性操作引起),这个时候要注意被联动的状态改变的上报(同时也要注意区分出状态改变的原因),这些联动可以是层级的关系(上层关闭,下层自动关闭),也可以是平级的关系。比如一些内容服务类的app,提供内容类型的关注,并同时可定制内容子类型,当子类型全部删除后,则父类型自动取消关注。这种情形下,父类型的取消关注就会有两种方式,一种是直接取消父类型,一种是通过对子类型的操作联动父类型的改变。另外一些隐性的联动也可以通过事件映射的方式下沉到埋点层解决,如果没有这个将同类型操作结果的事件在底层映射成一个,很容易造成埋点遗漏,如果后面又利用此事件建立了开关累积表,则统计的准确性大大降低,而且修复起来也很复杂。
演化是指在一个行为发生的过程中该行为附带的属性会发生变化,比如在一次播放过程中清晰度的切换、暂停和继续、播放器界面的小屏和大屏切换等,或者随着时间推移弹窗内容的改变等,这些存在演化的行为,一般的建议是用一个标示符串联起来,比如播放用的sessionid串联一次完整的播放,下单过程的产生订单id(注意区分成功之后的订单id),在某些场景要求不细的情况,可合并到事件的某个阶段一起来上报,不用拆分阶段来追踪整个链条。
本节对埋点设计中常见的刷新流、列表式、点击相关、联动演化四种常见情形讲解了埋点设计的方式,当然埋点中并不仅仅这几种方式,从统计需求出发,结合实际的场景,才是埋点设计的根本出发点。