DataTester支持多种语言的SDK,这些SDK接口上报的数据,在底层数据模型中需要使用统一的数据格式,系统为您提供的预置事件/属性已遵循此统一的数据格式,如果您需要自定义事件/属性,需严格按照支持的数据格式来定义自定义事件/属性的数据格式。本文为您介绍详细的数据格式要求。
使用各类型SDK采集上报数据时:
其中:
根据增长分析的业务数据分析场景,Finder为您将事件和属性进行了以下业务层面的定义分类,后续您在SDK集成与埋点配置时,可根据业务需要配置对应的事件/属性。
事件/属性分类 | 业务含义说明 | |
---|---|---|
系统预置 | 预置事件公共属性 | 系统预置的每一个事件都会上报的通用属性。比如Finder SDK上报的设备信息类字段。 |
预置事件及事件属性 | 系统预置的埋点事件以及事件属性。 | |
预置用户属性 | 系统预置的用于描述用户自身状态的属性。 | |
自定义 | 自定义事件公共属性 | 客户在预置事件公共属性以外自定义的事件公共属性。 |
自定义事件及事件属性 | 客户在预置事件及事件属性以外自定义的事件及事件属性。 | |
自定义用户属性 | 客户在预置用户属性以外自定义的用户属性。 |
数据类型有以下几种:
采集数据类型-中文名 | 采集数据类型-JSON | 数据库类型 | 额外说明 | 示例数据 |
---|---|---|---|---|
整数 | number | int64 | 取值范围:[-9223372036854775808, 9223372036854775807] | 1024 |
浮点数 | number | float64 | 8字节,最大精度16位 | 10.24 |
字符串 | string | string | 长度不超过 1024 字符,utf-8编码 | "1024" |
数组 | array | list | 最多支持500个元素,元素数据类型支持 string,一个数组中所有元素类型需保持一致。 注意 数据落库时,会对 list 的元素进行去重,例如 [5,5,5] ,变成[5] ; [5,5,6] ,变成[5,6] ; [5,6,5] ,变成[5,6] 。 | ["10", "24"] |
日期时间 | string | datetime | 上报格式:
日期的取值范围:[1970, 2099] 说明 如果是形如 "2020-07-07 01:22:33" 的 datetime 上报,默认按应用级的时区; | "2020-10-24 23:47:12" |
版本 | string | string | 版本类数据的上报格式为:
系统发现上报数据的取值的格式匹配时,会自动将数据类型设置为版本类型。版本类型可按数值排序规则进行排序,也可进行大于及小于的运算符进行筛选。 注意 版本类型的数据在入库存储时,数据格式为string,在后续查询分析时会进一步处理为version类的数据,查询时支持的过滤条件为version类型数据支持的过滤条件。 | "10.2" |
其他类型 | object/boolean | string | 支持上报 object 和 boolean (bool:是/否)数据类型的数据,但会被转化成 string 进行存储。 | -- |
类别 | 分析功能 | 数据类型 | 计算方法 |
---|---|---|---|
事件 | 实验报告 | -(全部) | 总次数 |
事件 | 实验报告 | -(全部) | 总次数 |
事件属性 | 通用 | int | 按……求和 |
事件属性 | 通用 | Int | 按……求去重数 |
类型 | 为空 | 不为空 | = | ≠ | 大于 | 小于 | 大于等于 | 小于等于 | 包含 | 不包含 | 正则匹配 |
---|---|---|---|---|---|---|---|---|---|---|---|
字符串 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
整型 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
浮点型 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
数组 | ✓ | ✓ | ✓ | ✓ | |||||||
日期时间 | ✓ | ✓ | |||||||||
版本 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
操作符名称 | 说明 |
---|---|
固定范围 | 所选属性的时间在一个固定的时间范围内,可以是过去365天到未来365天内的任何一天或多天。 |
在当前时间 | 所选属性的时间位于查询发起的时刻到用户所设定的相对时段之间。
|
在今天和 | 所选属性的时间位于查询发起的当天(自然天)到用户所设定的相对天数(自然天)范围之间。
|
在事件发生 | 所选属性的时间位于相对当前事件的发生时间的一段时间内。由于用到了事件的发生时间,所以仅当作为事件的过滤条件时才会出现这种操作符。
N 的取值范围:
|
说明
选择不同数据格式注意事项:
说明
超过上述限制时,超过的事件、属性数据可能会被系统自动丢弃。
使用客户端 SDK (iOS、Android)导入的数据,服务端默认只接收事件发生时间在接收时间向前 7 天内和向后24小时内数据。
中文名 | 数据库类型 | 额外说明 |
---|---|---|
整数 | int64 | 取值范围:[-9223372036854775808, 9223372036854775807] |
浮点数 | float64 | 8字节,最大精度16位 |
字符串 | string | 最大支持 1024 字符。 |
版本(字符串) | version(string) | 格式:1. 2段~6段 2. 英文句点分隔 3. 每段最长5位 |
数组 | list | 最多支持500个元素,元素数据类型支持 string,一个数组中所有元素类型需保持一致。 |
日期时间 | datetime | 日期取值范围:[1900, 2099] |
入库后可看到的数据格式分别如下:
{ "time": 1606301031, "server_time": 1606249381, "local_time_ms": 1606301031000, "device_id": "6912716898461553676", "os": "ios", "params": { "package": "package", "app_version": "1.0.6", "device_model": "iphone 6s plus", "timezone": "8.0", "os_version": "10.3.2", "session_depth_range": "5", "session_id": "762891435873043", "network_carrier": "TELCEL", "language": "zh", "exit_page": "http://datarangers.com.cn/pages/index/3", "product_name": "default_to_b", "resolution": "375x667", "platform": "ios", "loc_country_id": "1814991", "app_channel": "线下扫码下载", "device_brand": "苹果", "browser": "chrome", "os_name": "ios", "loc_province_id": "1280239", "session_duration_range": "100-200", "client_ip": "118.213.201.135", "loc_city_id": "1279540", "browser_version": "68.0.3440", "network_type": "mobile", "duration": 117, "session_depth": 5, "screen_width": 375, "localtime_ms": 1606301031000, "screen_height": 667, "session_duration": 117, "is_login": 1 } }
{ "user": { "ssid": "", // SSID "user_unique_id": "", // user_unique_id,存储于 string_profiles{'uuid'} "web_id": 0, // 网页端的匿名ID,存储于 string_profiles{'web_id'} "device_id": 0, // 移动端,小程序端的匿名ID "user_register_time": "" // 用户首次事件触发时间 }, "params": { "language": "zh-CN", "region": "", "app_version": "unknown", "app_region": "", "app_channel": "", "app_language": "", "os_version": "10", "os_name": "10", "device_model": "Windows NT 10.0", "device_brand": "", "network_type": "", "network_carrier": "" }, "items":{ "sku": [{ "id": "", "property_1": "", // 当前item定义的属性1 "property_1": "", // 当前item定义的属性2 }] }, "event_name": "predefine_pageview", "app_id": "2174", // string, rangers 中的应用id "app_name": "数据发现者", // string, rangers 中的应用名 "server_time": 1606783082, // int(timestamp), 服务端收到事件的时间, 精确到 ms "time": 1606783080, // int(timestamp), time = local_time_ms/1000,单位为秒。 "event_date": 1606783080 // date, 基于 time 计算,但只精确到天 }
描述:例如IOS端先传入A属性的格式为数值类型,安卓端后传入A属性的格式为字符串类型,此时系统如何处理,结果会如何?
A2:一个属性的类型由首次导入的数据类型决定,如果后续传入不同数据类型的数据,系统会尝试做转换,如果转换成功,则入库。如果转换失败,则属性信息值为‘0’入库,相当于属性信息丢失,但事件正常上报。
具体转换成功信息如下表:
原数据类型 | 新数据类型 | 是否转换成功 | 其他说明 |
---|---|---|---|
int、float、datetime、list | string | 是 | |
数值型string,例如‘1’,‘0.1’ | int、float | 是 | 原数据类型虽为string,但是值为数字123456 |
float | int | 是 | 但是会丢失小数点后面的数据。 |
int | float | 是 | |
其余数据类型均转换失败。 |
注意
需要在数据校验侧规避这一问题,如果发生,请错误端及时调整数据格式,否则会引发数据丢失。
A3:时间戳不支持,只支持日期时间的格式。
A4:支持。(上报格式:"yyyy-MM-dd")
中文名 | 数据库类型 | 应用场景 |
---|---|---|
整数 | int64 | 需要数值求和,平均值等计算,并且不会出现小数的情况。例如:年龄,整数金额。 |
浮点数 | float64 | 需要数值求和,平均值等计算,并且会出现小数的情况。例如:折扣金额,时长。 |
字符串 | string | 常用的文本类属性,例如:页面标题,按钮名称,商品分类。不需要计算的ID类型,例如:内容ID,商品ID。 |
数组 | list | 集合,一个属性有多个值,但筛选又需要按单个筛选的。例如:一篇娱乐新闻属于多个内容标签,{‘热门’,‘娱乐’,‘新闻’}例如:一个商品属于多个商品标签{'折扣',‘秋季’,‘女性’} |
日期时间 | datetime | 需要按照日期范围筛选的 |
版本 | string | 需要对版本进行排序时 |
默认情况下,系统在遇到被“.”切割为至少两段的数据时(例如 2.0),会自动判断其为版本类型。而对于已知的版本类型的字段,我们会将这个限制放开,允许没有“.”,例如:2 这样的值上报。因为在一些情况下,版本号只有一段。当然对于这种情况,你也可以选择将版本号作为 int 类型上报。