事件埋点格式文档
1. 数据整体格式
日志文件是一行一个 JSON,物理上对应一条数据,逻辑上对应一个描述了用户行为的事件,或是描述一个或多个用户属性的 Profile 操作。
2. track
记录一个 Event 及关联的 Properties。
数据样例:
{
"distinct_id": "123456",
"time": 1434556935000,
"type": "track",
"event": "ViewProduct",
"project": "ebiz_test",
"time_free": true,
"properties": {
"is_login_id":true,
"app_version":"1.3",
"wifi":true,
"ip":"180.79.35.65",
"province":"湖南",
"city":"长沙",
"user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) CriOS/58.0.3029.113 Mobile/14F89 Safari/602.1",
"screen_width":320,
"screen_height":640,
"item_id":12345,
"item_name":"菜单",
"item_classify":"导航"
}
}
对于上述字段的说明如下:
- distinct_id:类型是字符串,对用户的标识,对未登录用户,可以填充设备标识、CookieID 等,对于登录用户,则应该填充注册账号;这里的例子,我们假设是一个未注册用户,所以填充的是一个设备编号;
- time:类型是数值,事件发生的实际时间戳,精确到毫秒;
- type:track 表明是记录一个 Event ,这里我们假设是一个商品浏览行为;
- event:事件名,需是合法的变量名,即不能以数字开头,且只包含:大小写字母、数字、下划线;
- project:这条数据所属项目名,若不指定该参数,则需要使用该字段时取值 default,即默认项目。指定的项目必须是系统中已经存在的项目,否则这条数据将无效;
- properties:这个 Event 的具体属性,以 dict 的形式存在。其中以自定义属性名需要是合法的变量名,不能以数字开头,且只包含:大小写字母、数字、下划线,自定义属性不能以 $ 开头;同一个名称的 property,在不同 event 中,必须保持一致的定义和类型;同一个名称的 property 大小写敏感,如果已经存在小写属性就不可再导入对应大写属性(比如元数据中有 abc 属性名,不能再传 ABC,Abc 等属性名),否则数据会校验失败不入库。
- is_login_id:distinct_id 对应的是否是一个注册 ID;
- app_version:用户所使用的 App 的版本;
- wifi:这条事件发生时,用户是否在使用 wifi;
- ip:用户使用设备的 IP。若数据中出现 ip,且数据中没有 province 或 city 字段,将使用该 IP 解析出省市信息填入缺失字段;
- province、city:省、市,在没有填充这两个字段的时候,会根据 IP 进行解析;
- user_agent:可选参数。如果传入该参数,则解析 User-Agent,解析结果包括:设备制造商、设备型号、操作系统、操作系统版本、浏览器、浏览器版本、爬虫名称(如果是爬虫);
- screen_width、screen_height:屏幕的宽和高;
- item_id、item_name、item_classify:跟商品相关的一些具体属性。
3. Profile 相关操作
Profile 相关操作,主要是用来设置用户的 Profile 的,提供了如下一系列接口:
数据样例:
{
"distinct_id": "12345",
"type": "profile_set",
"time": 1435290195610,
"project": "ebiz_test",
"properties": {
"province":"湖南",
"company":"平安国际融资租赁有限公司",
"is_staff":true,
"city":"长沙",
"department": "汽融事业部",
"name": "小明",
"Gender":"男",
"signup_time": "2015-06-26 11:43:15.610"
}
}