第一部分 数据分类
在我目前接触到的数据领域里面上,我跟小姬一样,也是将数据分为以下两类,只是说法略有不同
1.日志数据,记录了用户访问、浏览、点击等发生了行为动作的埋点数据日志;
2.业务数据,记录了用户使用产品过程中发生的状态变化的业务库数据表,如用户数据表,商品详情表;
通俗的说,就是用户发生的行为动作(动态)和用户的状态(静态)的两种类型数据
进行数据埋点,就是为了记录下用户再什么场景下,做了什么动作,进而为后续的分析用户意图提供依据。
第二部分 埋点数据的组成和上报机制
一、埋点数据的3个组成部分
1.环境数据:用户使用环境信息,一般表示设备的信息,如用户手机型号,系统版本,网络状态等以及和apk版本信息,如apk版本号,下载渠道;
2.公共数据:即所有用户行为日志中的公共部分,如时间戳,会话id等
3.业务数据:如上报一个点击关注别人按钮的事件,需要知道关注者,被关注者,关注成功或失败等
举个例子,以原生app为例,一般要记录以下信息:
坏境数据
"Common":{
"imei": "12222",//国际移动设备识别号
"imsi": "12222",//国际移动设备识别码
"brand": "Huawei",//手机品牌
"client_version_code": "12222",//apk版本号
"channel": "google",//下载渠道
"version_code": 2666,//apk包自增序号
"os_version":"4.4.2",//手机系统版本号
"Model":"Huawei P20",//手机型号
"net_type":"2G",//网络状态
"deviceid":"1038d96a-e615-4b1b-9fc3-a38cc427f927",//设备id
"sp_code":"12333",//运营商编码
"platform":"android", //"android","iOS"
"session_id":"111",//会话id
"event_id":"111",//事件序号
"system_language":"1222", //手机系统语言
"client_ip":"111",//ip地址
"country":"CN"//国家
}
公共数据:
"Common":{
"user_id":"1222",//用户id,也是该案例中的
"client_time":"yyyy-mm-dd hh:mm:ss", //事件发生时间
"session_id":"1222", //会话id
"event_id":"1",//事件序号,从1开始自增
"event_name":"click_to_follow"//事件名字
}
业务数据:
{
"be_followeder_id":"1222",
"followe_results":"success"
}
二、数据上报机制
上报机制比较灵活选择,但是由于客户端数据有延迟的特性,比较重要的数据可以选择立即上报,避免因为断网、应用关闭进程等原因丢失实时数据;一般的数据可以选择聚合上报,几十秒或者一分钟一次聚合都行,因为频繁上报可能会占用用户的流量,影响用户的正常的产品使用
第三部分 3个重要的数据埋点
1.PV事件
埋点需求:app所有页面的访问事件,主要统计每个页面的pv、uv和页面停留时长
触发机制: 页面加载完成
上报机制:一分钟一次聚合上报;上报失败,保存本地,客户端每次(断网等原因)重新连接服务器时,即时上报
{
"Common":{"坏境数据"},
"Common":{"公共数据"},
"page_id":1,//页面id或者页面名称
"pre_page_id":2, //上个页面的名称
"page_duration":1000 //单位:毫秒,
}
疑问1:在书阿里巴巴《大数据之路》中,分析页面访问路径的时候会有页面的回退行为干扰到分析,故原书中讲“所以针对这种场景,我们做了特殊的设计,利用页面的生命周期,识别页面的复用,配合栈的深度来识别是否是回填行为”,此话怎讲?
疑问2:原生app的页面是怎么定义的?如通知栏是否可以定义为一个页面
疑问3:session和一次启动退出的区别是什么?以原生app为例,如抖音、微信等,session的过期时间设置为多长比较好,
2.曝光事件
以今日头条的信息流广告位为例
埋点需求:上报信息流广告曝光事件,用于后续的展示点击(即CTR)计算
触发机制: 1)整个消息高度的100%展示在用户可见的屏幕就算曝光;
2)列表滑动不上报,列表停止滑动时才算曝光 ;(即快速滑动不计曝光)
3)单次pv中,同一广告多次展示不做重复上报(即页面加载一次仅上报一次)
上报机制:退出页面时聚合上报;上报失败,保存本地,客户端每次(断网等原因)重新连接服务器时,即时上报
统计数据:不同广告的曝光次数、人数/天
{
"Common":{"坏境数据"},
"Common":{"公共数据"},
"extra json":
[
{"ads_id": "12345"}, //广告id
{"bid_id": "12345"}// 广告素材id //一个页面上可能有多个信息流广告,打包成数组结构并聚合上报
]
}
网上截图:今日头条信息流广告
3.播放事件(即video_view,下文简写vv)
埋点需求:用户观看视频事件,主要用户统计vv分布、人均vv,vv时长、卡顿比、完播率
触发机制: 视频拉出第一帧
上报机制:播放结束立即上报(上滑切换视频);上报失败,保存本地,客户端每次(断网等原因)重新连接服务器时,即时上报
{
"Common":{"坏境数据"},
"Common":{"公共数据"},
"video_id":"1222",//视频id
"counter":222,//播放百分比
"play_complete":11,//完整播放次数
"play_duration":100,//播放时长,单位毫秒
"delay_time":2000,//表示首帧缓冲时长(一般无卡顿的视频也会有解码过程导致首帧延时)
"buffer_time":2000,//总缓冲时长,不包括首帧缓冲时长
"buffer_count":2,//总缓冲次数,不包括首帧缓冲次数
"cdn_host":"1222"// cdn地址,如有不同cdn时可选
}