伙伴云存储支持对存储的数据进行分组聚合查询,聚合统计接口 提供了分组聚合的能力。我们设计了类似 SQL 的聚合查询参数,帮助开发者快速理解如何通过接口实现对数据的分组和聚合。聚合的参数(关键字)包括 SELECTWHEREGROUP_BYORDER_BYLIMITOFFSET

请求参数说明

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"
                }
            ]
        }
    ]
}

分组对象 包括 selectgroup_by 两部分组成。其中 select 是聚合函数的结果,group_by 是分组函数处理的结果。


聚合函数结果

计算后的结果与请求的聚合项一一对应,并且会将聚合的字段和函数返回,帮助开发者找到对应关系。

字段说明

名称 说明
field 统计的字段ID或者系统字段名称(如 created_by
aggregation 聚合函数
function 字段值处理函数
value 聚合计算后的值


分组函数结果

同样的,分组后的结果与请求的分组项一一对应,并且会将分组的字段和函数返回。

字段说明

名称 说明
field 统计的字段ID或者系统字段名称(如 created_by
aggregation 聚合函数
function 字段值处理函数
values 聚合计算后的值

这里的 values 值与数据中的 values 格式和设计一致,不同字段会返回的 values 的值可以参考 数据格式 中关于 values 的部分。