伙伴云存储支持对存储的数据进行分组聚合查询,聚合统计接口 提供了分组聚合的能力。我们设计了类似 SQL 的聚合查询参数,帮助开发者快速理解如何通过接口实现对数据的分组和聚合。聚合的参数(关键字)包括 SELECT、WHERE、GROUP_BY、ORDER_BY、LIMIT、OFFSET。
请求参数说明
SELECT 参数
表示返回的字段以及执行聚合的函数,类型是数组,每一项是需要返回的字段。参数示例如下:
{
"select": [
{
"field": "2001",
"aggregation": "sum",
"as": "select1"
},
{
"field": "created_on",
"aggregation": "avg",
"function": "week",
"as": "select2"
}
]
}
示例中的参数表示,同时对ID为2001的字段和创建时间字段做聚合统计,其中对ID为2001的字段求和,对创建时间字段先取周数后再取平均值。
字段说明
名称 | 说明 |
---|---|
field | 统计的字段ID或者系统字段名称(如 created_by ) |
aggregation | 聚合函数 |
function | 字段值处理函数 |
as | 聚合后的字段别名,提供给其他参数使用 |
WHERE 参数
使用查询条件的控制聚合计算的数据集合,是标准的 筛选器 对象,详细介绍参考 筛选器。
GROUP_BY 参数
表示分组的规则,类型是数组,每一项是分组的字段。参数示例如下:
{
"group_by": [
{
"field": "2004",
"function": "year",
"as": "group1"
}
]
}
示例中的参数表示,同时计算ID为2001的字段的年份后分组。
字段说明
名称 | 说明 |
---|---|
field | 统计的字段ID或者系统字段名称(如 created_by ) |
function | 字段值处理函数 |
as | 聚合后的字段别名,提供给其他参数使用 |
ORDER_BY 参数
表示对分组聚合后的结果进行排序,必须使用 SELECT 或者 GROUP_BY 中的字段别名。参数示例如下:
{
"order_by": [
{
"field": "select2",
"sort": "desc"
}
]
}
字段说明
名称 | 说明 |
---|---|
field | 聚合或者分组的字段别名 |
sort | 排序顺序 |
LIMIT 参数
分组聚合后返回的数据数量
OFFSET 参数
分组聚合后返回的数据偏移量,OFFSET 通常与 LIMIT 共同使用实现分页展示的效果。
支持函数说明
目前支持的聚合和计算函数包括以下列表:
aggregation
名称 | 说明 |
---|---|
max | 最大值 |
min | 最小值 |
avg | 平均数 |
count | 计数 |
sum | 求和 |
function
名称 | 说明 |
---|---|
week | 一年中的第几周 |
year | 年份 |
month | 月份 |
quarter | 季度 |
weekday | 一周中的第几天 |
day | 一年中的第几天 |
distinct | 结果去重,通常和聚合函数中的 count 一起使用 |
响应结果说明
聚合分组查询的结果是一个数组。其中数组的每一项是一个 分组对象,示例如下:
{
"select": [
{
"field": "2001",
"aggregation": "sum",
"value": 100
},
{
"field": "2002",
"aggregation": "count",
"value": 10
}
],
"group_by": [
{
"field": "2004",
"function": "week",
"values": [
{
"value": 2016
}
]
},
{
"field": "2006",
"values": [
{
"item_id": 3001,
"title": "数据1"
}
]
}
]
}
分组对象 包括 select 和 group_by 两部分组成。其中 select 是聚合函数的结果,group_by 是分组函数处理的结果。
聚合函数结果
计算后的结果与请求的聚合项一一对应,并且会将聚合的字段和函数返回,帮助开发者找到对应关系。
字段说明
名称 | 说明 |
---|---|
field | 统计的字段ID或者系统字段名称(如 created_by ) |
aggregation | 聚合函数 |
function | 字段值处理函数 |
value | 聚合计算后的值 |
分组函数结果
同样的,分组后的结果与请求的分组项一一对应,并且会将分组的字段和函数返回。
字段说明
名称 | 说明 |
---|---|
field | 统计的字段ID或者系统字段名称(如 created_by ) |
aggregation | 聚合函数 |
function | 字段值处理函数 |
values | 聚合计算后的值 |
这里的 values 值与数据中的 values 格式和设计一致,不同字段会返回的 values 的值可以参考 数据格式 中关于 values 的部分。