json格式取值_神策数据格式
神策分析⽀持多种不同语⾔的 SDK,这些 SDK 虽然在外部提供的接⼝上有所不同,但是在内部实现上都使⽤统⼀的数据格式,并且 数据导⼊ 都⽀持直接导⼊以⽂件形式存储的符合要求格式的数据,在这⾥,我们对数据格式进⾏⼀个更加细致的描述。
注意:这⾥描述的是底层数据传输格式的定义,和具体 SDK 的调⽤接⼝⽆关
注意:$is_login_id 参数说明
1. 数据整体格式
⽇志⽂件是⼀⾏⼀个 JSON,物理上对应⼀条数据,逻辑上对应⼀个描述了⽤户⾏为的事件,或是描述⼀个或多个⽤户属性的 Profile 操作。
1.1. track:
记录⼀个 Event 及关联的 Properties。
数据样例:
{
"distinct_id": "123456",
"time": 1434556935000,
"type": "track",
"event": "ViewProduct",
"project": "ebiz_test",
"time_free": true, //建议在导⼊历史数据时使⽤,SDK 采集的实时数据不建议使⽤
"properties": {
"$is_login_id":true, //此参数请慎重使⽤,详细介绍请参考⽂档底部 8.1 $is_login_id 参数说明
"$app_version":"1.3",
"$wifi":true,html空格写法
"$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,
"product_id":12345,
"product_name":"苹果",
"product_classify":"⽔果",
"product_price":14.0
}
}
对于上述字段的说明如下:
distinct_id:类型是字符串,对⽤户的标识,对未登录⽤户,可以填充设备标识、CookieID 等,对于登录⽤户,则应该填充注册账号;这⾥的例⼦,我们假设是⼀个未注册⽤户,所以填充的是⼀个设备编号;
time:类型是数值,事件发⽣的实际时间戳,精确到毫秒;
type:track 表明是记录⼀个 Event ,这⾥我们假设是⼀个商品浏览⾏为;
event:事件名,需是合法的变量名,即不能以数字开头,且只包含:⼤⼩写字母、数字、下划线和 $,其中以 $ 开头的表明是系统的保留字段,⾃定义事件名请不要以 $ 开头,且 event 字段长度最⼤为 100;
project:这条数据所属项⽬名,若不指定该参数,则需要使⽤该字段时取值 default,即默认项⽬。指定的项⽬必须是系统中已经存在的项⽬,否则这条数据将⽆效,更多项⽬相关请参见多项⽬;
time_free:可选字段,表⽰不根据事件发⽣时间过滤该事件。只要出现 time_free 这个 key 且 value 不为 null,将不再校验 time 是否在允许导⼊的时间范围内。导⼊历史数据时可能会⽤到该字段;
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,解析结果包括:设备制造商、设备型号、操作系统、操作系统版本、浏览器、浏览器版本、爬⾍名称(如果是爬⾍);⽬前是神策是通过 UA 判断并有⼀个默认的属性 $bot_name (爬⾍名称),但是有两种情况⽆法判断,第⼀种:如果UA ⾥没有标明、且会触发 JS 脚本的⾮法爬⾍。第⼆种:如果爬⾍没有触发 JS 脚本,那么也不会触发我们的 SDK ,所以本⾝就不会被统计到。对于爬⾍种类,不能提前把所有的种类都加进去,主流的神策都加了,其它的属于不太常见的,量较少。$screen_width、$screen_height:屏幕的宽和⾼;product_id、product_name、product_classify、product_price:跟商品相关的⼀些具体属性。
1.2. track_signup:
这个接⼝是⼀个较为复杂的功能,请在使⽤前先阅读 标识⽤户,并在必要时的技术⽀持⼈员。
数据样例:
{
"distinct_id":"12345",
"original_id":"2b0a6f51a3cd6775",
"time": 1434557935000,
"type": "track_signup",
"event": "$SignUp",
"project": "ebiz_test",s11全球总决赛名额
"properties": {
"$manufacturer":"Apple",
"$model": "iPhone 5",
"$os":"iOS",
"$os_version":"7.0",
"$app_version":"1.3",
"$wifi":true,
"$ip":"180.79.35.65",
"$province":"湖南",
"$city":"长沙",
"$screen_width":320,
"$screen_height":640
}
}
这条数据表⽰,⼀个匿名 ID 为 2b0a6f51a3cd6775 的⽤户,成功完成了注册,注册后的注册 ID 是 12345。并且系统后台,会将original_id 为 2b0a6f51a3cd6775 的⽤户和 distinct_id 为 12345 的⽤户,当做同⼀个⽤户对待。需要注意的是,此接⼝中的original_id 为必须字段,表⽰与注册 ID 进⾏关联的匿名 ID。
1.3. Profile 相关操作
Profile 相关操作,主要是⽤来设置⽤户的 Profile 的,提供了如下⼀系列接⼝:
1.3.1. profile_set:
直接设置⼀个⽤户的 Profile,如果⽤户或者 Profile 的字段已存在,则覆盖,不存在则⾃动创建。
数据样例:
{
"distinct_id": "12345",
"type": "profile_set",
"time": 1435290195610,
"project": "ebiz_test",
"properties": {
"$province":"湖南",
"FavoriteFruits": ["苹果","⾹蕉","芒果"],
"Age":33,
"$city":"长沙",
"IncomeLevel": "3000~5000",
"$name": "⼩明",
"Gender":"男",
"$signup_time": "2015-06-26 11:43:15.610"
}
}
1.3.
2. profile_set_once
直接设置⼀个⽤户的 Profile。与 profile_set 接⼝不同的是,如果⽤户或者 Profile 的字段已存在,则这条记录会被忽略⽽不会覆盖已有数据,如果 Profile 不存在则会⾃动创建。因此,profile_set_once ⽐较适⽤于为⽤户设置⾸次激活时间、⾸次注册时间等只在⾸次设置时有效的属性。
数据样例:
{
"distinct_id": "12345",
"type": "profile_set_once",
"time": 1435290195610,
"project": "ebiz_test",
"properties": {
"$province":"湖南",
"FavoriteFruits": ["苹果","⾹蕉","芒果"],
"Age":33,
"$city":"长沙",
"IncomeLevel": "3000~5000",
"$name": "⼩明",
"Gender":"男",
"$signup_time": "2015-06-26 11:43:15.610"
base32编码
}
}
}
1.3.3. profile_increment:
增加或减少⼀个⽤户的某个 NUMBER 类型的 Profile 值,⽐如给⽤户属性 Age 的值加 1 或者减 1 。如果⽤户表( users 表)中不存在这个⽤户,则会在⽤户表中⾃动创建该⽤户的 id 记录,并给该⽤户设置相应的 Profile 属性值,会在默认值 0 的基础上增加上传的 Profile 值。合并排序和快速排序的比较
数据样例:
{
"distinct_id": "12345",
"type": "profile_increment",
"time": 1435290200354,
"project": "ebiz_test",
"properties": {
"Age": 1
}
}
1.3.4. profile_delete:
删除⼀个⽤户的整个 Profile。switch语句判断条件可以接受的数据类型有哪些
数据样例:
{
"distinct_id": "12345",
"type": "profile_delete",
"time": 1437290200354,
"project": "ebiz_test",
"properties":{
}
}
1.3.5. profile_append:
向某个⽤户的某个数组类型的 Profile 添加⼀个或者多个值。如果本次上传的值,与系统中已存在的值有重复,默认是不会去重的。如果本次上传的值,有重复项,也不会去重的。
数据样例:
{
"distinct_id": "12345",
"type": "profile_append",
"time": 1437280200354,
"project": "ebiz_test",
"properties": {
"FavoriteFruits": ["橘⼦","西⽠"]
}
}
1.3.6. profile_unset:
将某个⽤户的某些属性值设置为空。另外,为了与其它接⼝保持⼀致,在提交的数据上,属性的值请设置为⾮ null 的任何值,例如 true。
数据样例:
{
"distinct_id":"12345",
"type":"profile_unset",
"time":1437280200354,
"project": "ebiz_test",
"properties":{
"Age":true,
"FavoriteFruits":true
}
}
爬虫软件 app
1.4. Item 相关操作

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。