查询
本文旨在说明在问题列表以及问题详情等页面中,查询功能的使用技巧。
1. 使用简介
展开与收起
打页面后,默认是收起状态,可以点击展开,显示已添加的所有筛选字段。
添加字段
默认显示当前页面支持的所有筛选字段,用户可以通过【添加字段】按钮,自由调整期望显示的字段。
用户调整展示的筛选项后,Bugly管理台会在浏览器本地保存用户的设置。在没有清除缓存的情况下,下次进入相同页面,展示的是上次设置的字段。
查询
调整筛选字段后,查询并不立即生效,需要手动点击【查询】按钮,才会真正执行查询操作。
保存记录
我们可以通过【保存记录】操作,将经常使用的查询组合保存起来,以便下次使用。这些查询组合,不需要再使用时,可以删除。
2. 筛选字段类型
Bugly支持的筛选项可以分为这些类型:时间范围,版本类型,数值类型,字符串类型,字符串数组类型,可枚举类型,特殊类型。不同类型支持不同的搜索模式,大部分搜索模式支持输入多个关键字。以下是这些筛选类型的详细说明。
时间范围
时间范围支持[5分钟,小时,天,周,月]等5种聚合粒度。
其中,5分钟和小时聚合只支持最近48小时的数据,包含自定义,最近1小时,今天,昨天三种模式。
而天,周,月这三种聚合粒度,支持自定义,最近7天,最近30天,最近90天等模式。
版本类型
支持[是,不是,大于,大于等于,小于,小于等于,区间,匹配,不匹配,为空,不为空,开头匹配,开头不匹配,结尾匹配,结尾不匹配,正则表达]这些搜索模式。
版本类型的字段,本质存储的是一个字符串,同时符合版本规范。所以,版本类型的筛选项同时具备了数值类型和字符串类型筛选项的所有搜索模式。
版本类型的字段包含,APP版本,SDK版本,系统版本等筛选字段。
- Bugly按业界推荐的版本格式来理解版本,主版本号.次版本号.修订号.构建号。
- Bugly会对版本字段进行解析,规范化为A.B.C.D四部分,从左到右解析,不足的部分补充0 。
- 解析出规范化的版本后,根据优先级(A > B > C > D),比较两个版本的大小。
- 根据这个比较规则 '4.5.2.1' > '4.5.2.0' > '4.5.1.99' > '4.4.2.100' 。
- 系统版本也采用同样的规则,'Android 7.1.2,level 25' > 'Android 6.0.1,level 23' > 'Android 5.1,level 22' > 'Android 5.0.2,level 21'
以下是详细的比较规则:
搜索模式 | 意义 |
---|---|
是 | 字符串的精确比较,支持输入多个关键字,这些关键字是OR关系,表示字段的值等于输入关键字中的任意一个时,条件满足。 |
不是 | 字符串的精确比较,支持输入多个关键字,这些关键字是AND关系,表示字段的值不等于输入关键字中的任意一个时,条件满足。 |
大于/大于等于 | 版本之间的比较,只允许输入一个关键字,表示字段的值「大于/大于等于」输入关键字表示的版本时,条件满足。 |
小于/小于等于 | 版本之间的比较,只允许输入一个关键字,表示字段的值「小于/小于等于」输入关键字表示的版本时,条件满足。 |
区间 | 版本之间的比较,需要输入两个关键字,例如输入的关键字分别是A和B,A<=x<=B,条件满足。 |
为空 | 表示字段是一个空串时/或者相应字段没有上报时,条件满足。Bugly平台不区分无值和空串的情况。 |
不为空 | 表示字段是一个非空串时,即字符串的长度大于0时,条件满足。 |
匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是OR关系,表示只要字段的值包含输入关键字中的任意一个时,条件满足。 |
不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值不包含输入关键字中的任意一个时,条件满足。 |
开头匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是OR关系,表示字段的值以输入关键字中的任意一个开头时,条件满足。 |
开头不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值不以输入关键中的任意一个开头时,条件满足。 |
结尾匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是OR关系,表示字段的值以输入关键字中的任意一个结尾时,条件满足。 |
结尾不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值不以输入关键字的任意一个结尾时,条件满足。 |
以下通过「APP版本」的几个示例来演示版本类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索大于'4.5.2'版本的个例 | 大于 | '4.5.2' | 版本为'4.5.2.1'的个例满足条件,但是版本为'4.5.2.0'的个例不满足条件。 |
搜索'4.5.2' 和 '4.5.3' 版本的所有子版本的个例 | 开头匹配 | '4.5.2.', '4.5.3.' | 如果不加后面的'.',会导致'4.5.20.xx' 等类型的版本也包含在内。 |
搜索hotpatch版本为499的所有版本的个例 | 结尾匹配 | '(hotpatch:499)' | APP版本包含主版本号和hotpatch版本号两部分,正常的表示如示:'4.5.3.1(hotpatch:499)',其中'4.5.3.1'为主版本号。 |
数值类型
支持[等于,不等于,大于,大于等于,小于,小于等于,区间]这些搜索模式。
数值类型的筛选项,该字段存储的值是数值类型,可能是整数类型,也可能是浮点类型。
数值类型的筛选项包含,使用时长,可用内存,卡顿耗时等字段。
搜索模式 | 意义 |
---|---|
等于 | 支持输入多个关键字,这些关键字是OR关系,表示字段的值等于输入关键字中的任意一个时,条件满足。 |
不等于 | 支持输入多个关键字,这些关键字是AND关系,表示字段的值不等于输入关键字中的任意一个时,条件满足。 |
大于 | 只支持输入一个关键字,表示字段的值大于输入关键字时,条件满足。 |
大于等于 | 只支持输入一个关键字,表示字段的值大于或者等于输入关键字时,条件满足。 |
小于 | 只支持输入一个关键字,表示字段的值小于输入关键字时,条件满足。 |
小于等于 | 只支持输入一个关键字,表示字段的值小于或者等于输入关键字时,条件满足。 |
区间 | 支持输入两个关键字,例如left和right,表示字段的值等于两者之一,或者处于两者之间时,条件满足。 |
以下通过「使用时长」的几个示例来演示数值类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索「使用时长」大于30秒的个例 | 大于 | 30 | 使用时长的单位是秒,所以输入30即表示30秒。 |
搜索「使用时长」在30分钟到1小时之间的个例 | 区间 | 1800, 3600 | 使用时长的单位是秒,30分钟即1800秒,1小时即3600秒。 |
以下再通过自定义维度的n1字段来演示数值类型的搜索,假定业务使用n1来表示机型的划档,分为5分档,从低到高为1到5 。
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索1档和2档机型上报的个例 | 是 | 1,2 | 表示搜索n1 = 1 or n1 = 2 的个例 |
搜索1档和3档之外的其他机型的个例 | 不是 | 1, 3 | 表示搜索 n1 != 1 and n1 != 3的个例 |
搜索大于等于3档的机型的个例 | 大于等于 | 3 | 表示搜索 n1 >= 3 的个例 |
搜索2到4档的机型的个例 | 区间 | 2, 4 | 表示搜索 2 <= n1 <= 4 的个例 |
字符串类型
支持[是,不是,匹配,不匹配,同时匹配,为空,不为空,开头匹配,开头不匹配,结尾匹配,结尾不匹配,正则表达]这些搜索模式。
字符串类型的筛选项包含,出错堆栈,出错线程,出错进程,消息ID,设备ID,用户ID,场景,机型,厂商等。
搜索模式 | 意义 |
---|---|
是 | 字符串的精确比较,支持输入多个关键字,这些关键字是OR关系,表示字段的值等于输入关键字中的任意一个时,条件满足。 |
不是 | 字符串的精确比较,支持输入多个关键字,这些关键字是AND关系,表示字段的值不等于输入关键字中的任意一个时,条件满足。 |
为空 | 表示字段是一个空串时/或者相应字段没有上报时,条件满足。Bugly平台不区分无值和空串的情况。 |
不为空 | 表示字段是一个非空串时,即字符串的长度大于0时,条件满足。 |
匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是OR关系,表示只要字段的值包含输入关键字中的任意一个时,条件满足。 |
同时匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值包含输入关键字中的所有时,条件满足。 |
不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值不包含输入关键字中的任意一个时,条件满足。 |
开头匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是OR关系,表示字段的值以输入关键字中的任意一个开头时,条件满足。 |
开头不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值不以输入关键中的任意一个开头时,条件满足。 |
结尾匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是OR关系,表示字段的值以输入关键字中的任意一个结尾时,条件满足。 |
结尾不匹配 | 字符串的模糊匹配,支持输入多个关键字,这些关键字是AND关系,表示字段的值不以输入关键字的任意一个结尾时,条件满足。 |
以下通过「出错堆栈」的几个示例来演示字符串类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索出「出错堆栈」中包含'com.tencent.bugly'包名的个例 | 匹配 | 'com.tencent.bugly' | 堆栈往往包含多个函数帧,这里需要用包含,而不是开头匹配。 |
搜索出「出错堆栈」中同时包含'com.tencent.bugly'和'com.tencent.rmonitor'包名的个例 | 同时匹配 | 'com.tencent.bugly', 'com.tencent.rmonitor' | 同时匹配表示,出错堆栈需要同时包含指定的所有关键字。 |
以下通过「错误进程」的几个示例来演示字符串类型的搜索。
假定一个业务包含多个进程,详细如下:
业务进程 | 进程类型 |
---|---|
com.tencent.demo | 主进程 |
com.tencent.demo:video_1 | 视频进程 |
com.tencent.demo:video_2 | 视频进程 |
com.tencent.demo:game_1 | 游戏进程 |
com.tencent.demo:game_2 | 游戏进程 |
com.tencent.demo:xg_vip_service | 服务进程 |
com.tencent.demo:pm_service | 服务进程 |
com.tencent.demo:decode_service | 服务进程 |
com.tencent.demo:encode_service | 服务进程 |
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索出只出现在主进程的个例 | 是 | com.tencent.demo | 采用字段值的精确匹配 |
搜索出只在视频进程出现的个例 | 开头匹配 | com.tencent.demo:video_ | 通过开头匹配来找到视频进程 |
搜索出在视频进程或者游戏进程出现的个例 | 开头匹配 | com.tencent.demo:video , com.tencent.demo:game | 通过输入多个关键字来达到效果 |
搜索出不在服务进程出现的个例 | 结尾不匹配 | _service | 通过结尾不匹配来搜索不在服务进程发生的个例 |
字符串数组类型
字符串数组类型表示字段的值是一个字符串数组,包含自定义维度的a1-a10,实验ID,个例标签,业务下钻等字段。
字符串数组类型支持[包含,不包含,同时包含,匹配,同时匹配,为空,不为空,开头匹配,结尾匹配]等搜索模式。对于字符串数组的比较,大部分模式最终比较的是字符串数组中的每一个字符串。
搜索模式 | 意义 |
---|---|
包含 | 字符串的精确比较,支持输入多个关键字,这些关键字是OR关系,表示这些关键字中的任意一个在字段值中时,条件满足。 |
不包含 | 字符串的精确比较,支持输入多个关键字,这些关键字是AND关系,表示所有关键字都不在字段值中时,条件满足。 |
同时包含 | 字符串的精确比较,支持输入多个关键字,这些关键字是AND关系,表示所有关键字都在字段值时,条件满足。 |
匹配 | 字段串的模糊比较,支持输入多个关键字,这些关键字是OR关系,表示字段值中的任意一个字段串包含输入关键字中的任意一个时,条件满足。 |
同时匹配 | 字段串的模糊比较,支持输入多个关键字,这些关键字是AND关系,表示字段值中的任意一个字段串同时包含所有输入关键字时,条件满足。 |
为空 | 表示字段的值是一个空数组时,条件满足。 |
不为空 | 表示字段的值不是一个空数组时,条件满足。 |
开头匹配 | 字段串的模糊比较,支持输入多个关键字,这些关键字是OR关系,表示字段值中的任意一个字符串以输入关键字中的任意一个开头时,条件满足。 |
结尾匹配 | 字段串的模糊比较,支持输入多个关键字,这些关键字是OR关系,表示字段值中的任意一个字符串以输入关键字中的任意一个结尾时,条件满足。 |
例如用户利用a1字段上报了最近访问的几个页面名称,其中登陆页包含两种Model,'LoginModeOnePage' 和 'LoginModeTwoPage',以下是一些上报个例的a1字段的值。
上报个例 | a1字段的值 |
---|---|
1 | ['LoginModeOnePage', 'MessageListPage', 'FriendDetailPage'] |
2 | ['LoginModeTwoPage', 'MessageListPage', 'FriendListPage'] |
3 | ['LoginModeTwoPage', 'MessageListPage', 'FriendListPage', 'FriendDetailPage'] |
4 | ['MessageListPage', 'FriendListPage', 'FriendDetailPage'] |
5 | ['FriendListPage', 'MessageListPage', 'FriendDetailPage'] |
下面通过「自定义维度a1」的几个示例来演示字符串数组类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索出包含登陆页的个列,如上述中的1,2,3个例 | 包含 | 'LoginModeOnePage', 'LoginModeTwoPage' | 因为登陆页包含两种Model,'LoginModeOnePage' 和 'LoginModeTwoPage'。 |
搜索出包含登陆页的个列,如上述中的1,2,3个例 | 开头匹配 | 'Login' | 通过'Login'来匹配登陆页的两种Model。 |
搜索出同时包含登陆页和好友详情页的个例,如上述中的1,3个例 | 同时匹配 | 'Login','FriendDetailPage' | 这里不能用同时包含是因为,'LoginModeOnePage'和'LoginModeTwoPage'不会同时出现。 |
搜索出没有执行过登陆操作的个例,如上述中的4,5个例 | 不包含 | 'LoginModeOnePage', 'LoginModeTwoPage' | 不包含是包含的否定关系。 |
可枚举类型
可枚举类型是支持多选的下拉框,下拉框包含全部以及该字段所有的选项。可枚举类型的筛选项包含,版本类型,前后台状态,设备类型,系统堆栈等字段。
可枚举类型可能存储的是布尔类型的值,也可能存储的是字符串,或者整数类型。无论是哪一种类型,可枚举类型肯定是值可枚举的类型,并且值的类型不会太多,往往不会超过10项。
可枚举类型默认是选择全部,表示不筛选指定类型。用户可以通过下拉框,选择要匹配的类型,一般支持多选。
筛选字段 | 枚举值 |
---|---|
版本类型 | 全部,未知,开发版,灰度版,正式版 |
前后台状态 | 全部,未知,前台,后台 |
设备类型 | 全部,未知,真机,模拟器 |
系统堆栈 | 是,否 |
下面通过「版本类型」的几个示例来演示可枚举类型的搜索。
搜索目的 | 选中项 | 说明 |
---|---|---|
搜索所有开发版上报的个例 | 开发版 | 只选中「开发版」表示只搜索开发版的个例 |
搜索出灰度版和正式版上报的个例 | 灰度版, 正式版 | 选中「灰度版」和「正式版」表示只要是这两版本类型中的一个,条件满足。 |
搜索所有版本上报的个例 | 全部 | 当选中「全部」选项时,不能同时再选择其他的选项。 |
特殊类型
特殊类型的筛选项支持[OR,AND]两种搜索模式,包含,联动标记,异常现场,附件等字段。
搜索模式 | 意义 |
---|---|
OR | 支持选择多个选项,这些选项之间是OR关系。 |
AND | 支持选择多个选项,这些选项之间是AND关系。 |
下面通过崩溃问题列表的「联动标记」的几个示例来演示特殊类型的搜索。
搜索目的 | 操作符 | 输入关键字 | 说明 |
---|---|---|---|
搜索出崩溃前发生过卡顿或者Java内存泄露的个例 | OR | 卡顿,Java内存泄露 | 只要发生过卡顿,或者发生过Java内存泄露的个例都算条件满足。 |
搜索出崩溃前发生过卡顿而且发生过Java内存泄露的个例 | AND | 卡顿,Java内存泄露 | 卡顿以及Java内存泄露都发生过的个例才满足条件。 |