分析与日志
  • 日志服务
    • 概述
    • 实时日志
      • 实时日志概述
      • Push to EdgeOne Log Analysis
      • 推送至腾讯云 CLS
      • 推送至 AWS S3 兼容对象存储
      • 推送至 HTTP 服务器
    • Log Analysis (Beta)
      • Log Analysis(Beta) Overview
      • How to use Log Analysis filter condition
      • How to Modify Log Analysis Query Time Range
    • 离线日志
    • 相关参考
      • 字段说明
        • 七层访问日志
        • 四层代理日志
        • 边缘函数运行日志
        • Managed Rule Logs
      • 推送实时日志筛选条件
      • 自定义推送日志字段
      • 自定义日志输出格式
  • 数据分析
    • 概述
    • 分析
    • Web安全分析
    • Data Report
    • 相关参考
      • 抽样统计
      • 如何使用筛选条件
      • 如何修改查询时间范围
      • 如何导出统计数据与报告
      • How to Use API to Implement Grouping Aggregation in a Single Call
  • 告警服务
    • 自定义统计指标

How to Use API to Implement Grouping Aggregation in a Single Call

EdgeOne 数据查询接口支持传入DimensionName参数用于指定返回数据中的分组维度,以实现一次查询获取多个分组数据的效果,可以极大程度上减少 API 调用频次,简化您获取统计数据的操作。例如:在某次调用中入参 DimensionName = domain,则返回数据将按照每个域名单独返回一组数据。

适用范围

分组查询功能适用于以下 API:

使用场景

以下场景展示了如何通过组合 DimensionNameFilters 参数,实现高效、灵活的数据获取。在涉及大量域名或精细状态码的查询时,建议优先使用 Filters进行预筛选,并选择合适的查询粒度(Interval)。

场景1:批量获取多域名数据

在单一请求中同时查询多个域名的指标数据,避免为每个域名发起单独调用。
入参示例
{
"ZoneIds": ["*"],
"MetricNames": ["l7Flow_inFlux_hy"],
"StartTime": "2025-12-01T00:00:00Z",
"EndTime": "2025-12-02T00:00:00Z",
"Interval": "hour",
"Filters": [
{
"Key": "domain",
"Operator": "equals",
"Value": ["example.com", "api.example.com"]
}
],
"DimensionName": "domain"
}

场景2:按状态码类别进行聚合分析

获取按回源状态码大类(如2xx, 4xx, 5xx)分组的聚合数据。
入参示例
{
"ZoneIds": ["*"],
"MetricNames": ["l7Flow_request_hy"],
"StartTime": "2025-12-01T00:00:00Z",
"EndTime": "2025-12-01T12:00:00Z",
"Interval": "hour",
"Filters": [
{
"Key": "originStatusCode",
"Operator": "equals",
"Value": ["2xx", "4xx", "5xx"]
}
],
"DimensionName": "origin-status-code-category"
}

使用限制

单次请求最多返回 50,000 个数据项 TimingDataItem。数据项总数的计算规则如下:
指标个数 * 时间点个数 * 维度值个数 = 数据项总数
指标个数:MetricNames的列表长度。
时间点个数:(EndTime - StartTime) / Interval
维度值个数:
当未指定 DimensionName 时,默认按账号维度汇总数据,维度值个数为 1。
DimensionName = domain 时,维度值个数为 Filtersdomain 过滤条件指定的域名列表长度。
DimensionName = origin-status-code-category 时,维度值个数默认为 6。
DimensionName = origin-status-code 时,维度值个数默认为 600。
DimensionName 可以与 Filters 组合使用,通过在 Filters 中指定 DimensionName 对应的过滤条件以限制维度值个数。

示例

以查询某一小时的具体状态码维度的时序数据为例,假设查询条件如下:
MetricNames = ["l7Flow_request_hy"](指标个数 = 1)
StartTime = 2025-10-01T06:00:00+08:00EndTime = 2025-10-01T06:59:59+08:00Interval = "min"(时间点个数 = 60)
DimensionName = origin-status-codeFilters = [{"originStatusCode": ["0", "4xx", "5xx"]}](维度值个数 = 201)
则数据项总数为:
1 × 60 × 201 = 12060
未超过限制。
注意:
若查询的数据项总数超过 50,000,系统会返回错误 LimitExceeded.TimingDataItemLimitExceeded
此时,请通过调整入参减少单次查询的数据项至 50,000 以内,可采取的做法有:
1. 减少时间点个数:
缩短查询时间范围(StartTimeEndTime 之间的时间跨度)。
选择更大的时间间隔(Interval)。
2. 减少维度值个数:
调整 Filters,指定更少的 domainoriginStatusCode 列表。
3. 减少指标值个数:
调整 MetricNames,指定更少的查询指标。