1、数据的生成
1. 目标数据
收集和分析的数据主要包括页面数据、事件数据、曝光数据、启动数据和错误数据。
页面、事件、曝光、启动、错误等数据,还有公共信息:
common
"common": { -- 公共信息
"ar": "230000", -- 地区编码
"ba": "iPhone", -- 手机品牌
"ch": "Appstore", -- 渠道
"md": "iPhone 8", -- 手机型号
"mid": "YXfhjAYH6As2z9Iq", -- 设备id
"os": "iOS 13.2.9", -- 操作系统
"uid": "485", -- 会员id
"vc": "v2.1.134" -- app版本号
}
① 页面 page:
页面数据主要记录一个页面的用户访问情况,包括访问时间、停留时间、页面路径等信息。
比如JSON格式如下:
"page": { -- 页面信息
"during_time": 7648, -- 停留时间(毫秒)
"page_item": "3", -- 页面对象id
"page_item_type": "sku_id", -- 页面对象类型
"last_page_id": "login", -- 上页id
"page_id": "good_detail", -- 页面ID
"sourceType": "promotion" -- 页面来源类型
}
|
字段名称 |
字段描述 |
|
action_id |
动作id favor_add("添加收藏"), favor_canel("取消收藏"), cart_add("添加购物车"), cart_remove("删除购物车"), cart_add_num("增加购物车商品数量"), cart_minus_num("减少购物车商品数量"), trade_add_address("增加收货地址"), get_coupon("领取优惠券"); 注:对于下单、支付等业务数据,可从业务数据库获取。 |
|
item_type |
动作目标类型 sku_id("商品"), coupon_id("购物券"); |
|
item |
动作目标id |
|
ts |
动作时间 |
② 事件 (动作) actions
事件数据主要记录应用内一个具体操作行为,包括操作类型、操作对象、操作对象描述等信息。
"actions": [ --动作(事件)
{
"action_id": "favor_add", --动作id
"item": "3", --动作目标id
"item_type": "sku_id", --动作目标类型
"ts": 1585744376605 --动作时间
}
]
|
字段名称 |
字段描述 |
|
action_id |
动作id favor_add("添加收藏"), favor_canel("取消收藏"), cart_add("添加购物车"), cart_remove("删除购物车"), cart_add_num("增加购物车商品数量"), cart_minus_num("减少购物车商品数量"), trade_add_address("增加收货地址"), get_coupon("领取优惠券"); 注:对于下单、支付等业务数据,可从业务数据库获取。 |
|
item_type |
动作目标类型 sku_id("商品"), coupon_id("购物券"); |
|
item |
动作目标id |
|
ts |
动作时间 |
③ 曝光 displays
曝光数据主要记录页面所曝光的内容,包括曝光对象,曝光类型等信息。
"displays": [ -- 曝光信息
{
"displayType": "query", -- 曝光类型
"item": "3", -- 曝光对象id
"item_type": "sku_id", -- 曝光对象类型
"order": 1 -- 曝光顺序
},
{
"displayType": "promotion",
"item": "6",
"item_type": "sku_id",
"order": 2
},
{
"displayType": "promotion",
"item": "9",
"item_type": "sku_id",
"order": 3
},
{
"displayType": "recommend",
"item": "6",
"item_type": "sku_id",
"order": 4
},
{
"displayType": "query ",
"item": "6",
"item_type": "sku_id",
"order": 5
}
]
|
字段名称 |
字段描述 |
|
displayType |
曝光类型 promotion("商品推广"), recommend("算法推荐商品"), query("查询结果商品"), activity("促销活动"); |
|
item_type |
曝光对象类型 sku_id("商品skuId"), activity_id("活动id"); |
|
item |
曝光对象id |
|
order |
曝光顺序 |
④ 启动 start
启动数据记录应用的启动信息。
"start": { --启动信息
"entry": "icon", -- 启动入口
"loading_time": 18803, -- 启动加载时间
"open_ad_id": 7, -- 开屏广告id
"open_ad_ms": 3449, -- 广告播放时间
"open_ad_skip_ms": 1989 -- 用户跳过广告时间
}
|
字段名称 |
字段描述 |
|
entry |
启动入口 icon("图标"), notification("通知"), install("安装后启动"); |
|
loading_time |
启动加载时间 |
|
open_ad_id |
开屏广告id |
|
open_ad_ms |
广告播放时间 |
|
open_ad_skip_ms |
用户跳过广告时间 |
|
ts |
启动时间 |
⑤ 错误 err
错误数据记录应用使用过程中的错误信息,包括错误编号及错误信息。
"err":{ -- 错误日志
"error_code": "1234", -- 错误码
"msg": "***********" -- 错误信息
}
|
字段名称 |
字段描述 |
|
error_code |
错误码 |
|
msg |
错误信息 |
2. 数据埋点
主流埋点方式(了解)
目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点三种。
代码埋点是通过调用埋点SDK函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据。例如,我们对页面中的某个按钮埋点后,当这个按钮被点击时,可以在这个按钮对应的
OnClick 函数里面调用SDK提供的数据发送接口,来发送数据。
可视化埋点只需要研发人员集成采集 SDK,不需要写埋点代码,业务人员就可以通过访问分析平台的“圈选”功能,来“圈”出需要对用户行为进行捕捉的控件,并对该事件进行命名。圈
选完毕后,这些配置会同步到各个用户的终端上,由采集 SDK 按照圈选的配置自动进行用户行为数据的采集和发送。
全埋点是通过在产品中嵌入SDK,前端自动采集页面上的全部用户行为事件,上报埋点数据,相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析。
埋点数据日志结构
我们的日志结构大致可分为两类,一是普通页面埋点日志,二是启动日志。
普通页面日志结构如下,每条日志包含了,当前页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还包含了一系列公共信息,包括设备信息,地理位置,
应用信息等,即下边的common字段。
1)普通页面埋点日志格式
主要包含公共信息,页面、事件(动作)、曝光、启动、错误等数据信息
{ "common": { -- 公共信息 "ar": "230000", -- 地区编码 "ba": "iPhone", -- 手机品牌 "ch": "Appstore", -- 渠道 "md": "iPhone 8", -- 手机型号 "mid": "YXfhjAYH6As2z9Iq", -- 设备id "os": "iOS 13.2.9", -- 操作系统 "uid": "485", -- 会员id "vc": "v2.1.134" -- app版本号 }, "actions": [ --动作(事件) { "action_id": "favor_add", --动作id "item": "3", --动作目标id "item_type": "sku_id", --动作目标类型 "ts": 1585744376605 --动作时间 } ], "displays": [ { "displayType": "query", -- 曝光类型 "item": "3", -- 曝光对象id "item_type": "sku_id", -- 曝光对象类型 "order": 1 -- 曝光顺序 }, { "displayType": "promotion", "item": "6", "item_type": "sku_id", "order": 2 }, { "displayType": "promotion", "item": "9", "item_type": "sku_id", "order": 3 }, { "displayType": "recommend", "item": "6", "item_type": "sku_id", "order": 4 }, { "displayType": "query ", "item": "6", "item_type": "sku_id", "order": 5 } ], "page": { -- 页面信息 "during_time": 7648, -- 停留时间(毫秒) "page_item": "3", -- 页面对象id "page_item_type": "sku_id", -- 页面对象类型 "last_page_id": "login", -- 上页id "page_id": "good_detail", -- 页面ID "sourceType": "promotion" -- 页面来源类型 }, "err":{ -- 错误 "error_code": "1234", -- 错误码 "msg": "***********" -- 错误信息 }, "ts": 1585744374423 -- 跳入时间 }