1.什么是数据埋点?
大数据业务中涉及的数据分为两部分,
- 流量数据:以用户浏览产品,记录用户浏览行为的日志
- 业务数据:以生产系统中产生的业务数据库记录
例如我在刷淘宝,并且浏览了一个商品,并加入购物车,淘宝记录了我加入购物车的行为或者记录了我浏览这个商品的时长等等数据,这类型的数据是流量数据。
而后来我支付了订单,这时候淘宝会将我的订单记录放在数据库里,此时的订单数据就是业务数据。
流量数据的获取就是依靠数据埋点实现的,我理解的数据埋点是,我们所用的App、Web端、小程序等等都植入了数据埋点的SDK,会将用户行为发送到后端。
2.数据埋点的作用
数据埋点是为了设计用户动作的方案,探索用户动作的意图,记录用户动作发生的场景。
3.常见的数据埋点案例以及日常生活的例子
1)案例1
常见的埋点数据类型和数据如下:
[{ //Part1:配置信息 "user_id":"123", //埋点负责人的账号id "business":"xx业务", //埋点数据的业务分类 "label":"标签属性",//对埋点数据进行分类,对每个分类打标签 //Part2:环境信息 "uid":"123", //用户唯一ID,只要访问就生成一个新的身份标示 "user_id":"123", //用户的账户ID,仅登录用户可获取得到 "name":"joker",//用户的账户名称,仅登录用户可获取得到 "city_id":"2",//如果用户访问的页面有城市属性,这里可以获取页面的城市属性id "city_name":"上海",//如果用户访问的页面有城市属性,这里可以获取页面的城市属性值 "locate_city_id":"1",//用户访问时候所定位的城市id "locate_city_name":"北京",//用户访问时候所定位的城市属性值 "wifi":"on",//用户访问时候wifi的开关状态 "app_version":"10.9.2",//用户当前使用的app版本 "os_version":"11.8.2", //用户当前手机系统的版本 "os_souce":"android" //用户当前的手机系统(Android,iPhone,小程序、web…) //Part3:事件信息 "evs":[{ "id":"a1234"//坑位模块的全app唯一标示id "val_val":{ //以下所有数据为同时携带的想要获取的数据内容 "user_id":"123", //访问用户的账号id; "content_id":"123234", //商品唯一id标示 "title":"conklab连帽潮牌oversize情侣装",//商品标题; "price":"298",//商品价格; "business_id":"4",//商品分类属性id "business":"女装",//商品分类属性 "strategy":"abc123",//不同策略的策略id,用于区分不同策略的数据效果 "shop_id":"123",//商品所属的店铺id "mark":"双十一",//个性化的数据标签,比如双十一代表此商品正在参加双十一活动 "position":"2",//商品在列表中展示排序的第几个位置 } }] }]
上报策略:实际展示曝光上报策略,即只有当事件实际曝光显示在屏幕当中才会上报(露出像素>0)
- 滑动:页面上下滑动时,不重复上报
- 点击事件:触发上报
- 刷新:刷新页面时,重复上报(?)
- 翻页:翻到下一页又返回上一页时,不重复上报
- 事件点击落地页后自动跳转,不重复上报
- 锁屏后又回到原页面时,不重复上报;或者应用或浏览器在后台唤醒,也不重复上报
- 没有特殊限制定义,埋点需要根据坑位颗粒度(?)逐条上报,不做去重处理
例子:
案例1适用于站内埋点方式,例如各种Web端、App、小程序。
例如日常使用淘宝、京东等各大电商网站时,浏览过一些商品但没有实际购买,这些浏览动作是有进行数据埋点的,因为在浏览商品过后,主页就会出现同类或相似商品的推荐。
2)案例2
假设有个运营促销的活动,url是https://www.xxxabc.com/about/1.html,我们将这个活动投放在某网站用于引流。最有效的埋点方案是在url中添加参数如下
https://www.xxxabc.com/about/1.html?source=sina_joker_ad_about_01
- source是字段名称
- sina表示来源渠道
- joker表示来源渠道的负责人
- ad表示广告类型,这里以ad表示一类广告
- about是表示about这次活动
- 01:为图片素材的编号
例子:
常用的站外,站内数埋点方式,多用于WEB、小程序平台;可以延伸出很多种不同的数据埋点方式,例如用source=abc123来代替source=sina_joker_ad_about_01以避免url长度过长,参数过多。
在腾讯视频Web端,纯甄小蛮腰的图片的html标签如下:
<a class="ad_square_item" href="https://pro.jd.com/mall/active/2oa4uPkaXxHPQj6X4A4bbrjoQuom/index.html" target="_blank" _stat="new_vs3_banner2:item"> <img alt="纯甄" class="ad_pic" src="//puui.qpic.cn/tv/0/69353361_280260/0" style="visibility: visible;"> <span class="ad_title">纯甄</span> <span class="ad_desc">纯甄小蛮腰 好喝到底 撑腰到底</span> </a>
与正常的京东url:https://mall.jd.com/index-1000014803.html是有区别的,还是比较怀疑这里是否有在url上埋点
3)案例3
storymark: //业务场景标示,可以对应到不同的业务类型场景
-
“key1:”value
" //页面跳转的时候传递的参数,采用key:value的形式写入参数值 -
“key2:”value
" //保留尽可能多的keyxid,写入更多参数值 -
“key3:”value
" //保留尽可能多的keyxid,写入更多参数值
数据触发上报说明:
我们希望统计浏览小视频的入口,比如是通过搜索来的,还是关注来的。
1.当用户通过搜索进行筛选进入小视频时,在触发搜索任务时上报如下埋点数据:
storymark: //业务场景标示,可以对应到不同的业务类型场景 “index:”search" //key(index)定义为是首页,value(search)标示是来自搜索功能 “content:”美女" //key(conten)定义的是携带的内容参数,value(美女)标示内容参数
2.当用户到达小视频页时,触发上报埋点参数
通过关注浏览小视频的目标页也是类似的参数。
storymark: //业务场景标示,可以对应到不同的业务类型场景 “index:”guanzhu" //key(index)定义为是首页,value(guanzhu)标示是来自guanzhu功能 “content:”guanzhu" //key(conten)定义的是携带的内容参数,value(guanzhu)标示内容参数
注意这种埋点具有强烈的抹除逻辑,例如用户搜索了关键词但最终没有点开小视频,而是回到关注页点开,则搜索事件发生后的埋点数据需要删除,而改为上报关注的埋点数据。
例子:
数据埋点中的一种透传方案,主要用于统计站内的来源入口,适用于WEB、APP、小程序。
例如在刷微博时,微博会记录用户是通过搜索还是关注浏览到的博文。
4.数据埋点的解读
从案例1可以看出,埋点数据的信息一般包含以下三个部分
- 数据埋点的业务配置信息(例如某商品的名称,id等等)
- 在管理埋点时,我们已经对埋点的业务很明确,比如埋点事件的id,我们很清楚是谁负责的,中文名称是什么,所以用户在访问产品时,可以选择不上报,以减少收集的数据量,当我们在写入数据库时,再进行数据的补充。
- 用户的环境信息(例如用户所在的城市,用的App版本,登陆账号,手机系统,手机品牌等等)
- 一般因为在一次会话中基本不变,所以在一次会话中通常只获取一次,后在加工处理数据再补上这些信息
- 触发埋点的事件信息(浏览)
5.关于数据埋点的问题
1)案例1中为什么刷新浏览页需要重复记录呢?
2)案例3中透传方案的作用是什么?
3)埋点数据一般是入数据库还是直接进入到数据仓库?