查询报告数据

reportData.query 方法提供了一种同步检索报告数据的方式。与生成基于文件的报告(CSV 或 Excel)的标准 Reports 服务不同,此方法直接在响应中返回结构化 JSON 数据。这样一来,您就不需要预先定义、创建和保存 Report 资源,因此非常适合实时检索和探索数据。

概览

请按照本指南操作,熟悉如何使用此端点查询 Campaign Manager 360 报告数据。

准备请求

构建一个 ReportDataQueryRequest,指定维度、指标、日期范围、过滤条件和排序条件。

REST

{
  "body": {
    "dateRange": "LAST_7_DAYS",
    "dimensionNames": [
      "advertiser",
      "campaign"
    ],
    "metricNames": [
      "impressions",
      "clicks"
    ],
    "sortBys": [
      {
        "name": "clicks",
        "sortOrder": "DESCENDING"
      }
    ],
    "maxResults": 100
  }
}
dateRange
一个 DateRange 对象,用于指定查询的时间段。可以是自定义日期范围,也可以是相对日期范围。
dimensionNames
要分组的标准维度名称列表。
metricNames
必需。要纳入的标准指标名称列表。
dimensionFilters
用于过滤报告数据的 DimensionValue 对象列表。使用此参数可将查询结果限制为特定维度值。
sortBys
维度或指标的排序配置。每项配置都包含字段名称和排序顺序。
maxResults
每页返回的最大行数(默认值:100,最大值:1000)。

分页

maxResults 字段用于控制单个响应中返回的结果数。例如,如果您将 maxResults 设置为 10,则 API 最多会返回 10 个结果。如果符合您请求的结果少于 10 个,API 可能会返回少于 10 个结果。

如果还有其他结果,响应将包含 nextPageToken。如需检索下一页结果,请再次发送同一请求,并将 pageToken 字段设置为此令牌。其他所有请求参数保持不变。

发送请求

reportdata/query 端点发送 HTTP POST 请求:

POST https://dfareporting.googleapis.com/dfareporting/v5/userprofiles/{profileId}/reportdata/query

确保您的请求已通过标准 OAuth 2.0 凭据和必要的范围进行身份验证。如需了解详情,请参阅授权请求

成功响应

如果查询成功,则会返回一个 HTTP 200 OK 响应,其中包含 columnHeadersrowstotalRow 的 JSON 载荷。

{
  "columnHeaders": [
    { "name": "advertiser", "type": "DIMENSION" },
    { "name": "campaign", "type": "DIMENSION" },
    { "name": "impressions", "type": "METRIC" },
    { "name": "clicks", "type": "METRIC" }
  ],
  "rows": [
    {
      "values": [ "Test Advertiser", "Summer Campaign", "148672", "420" ]
    },
    {
      "values": [ "Test Advertiser", "Fall Campaign", "2159", "2" ]
    }
  ],
  "totalRow": {
    "values": [ "", "", "150831", "422" ]
  },
  "nextPageToken": "1234567890"
}
columnHeaders
返回的字段的名称和类型(DIMENSIONMETRIC)。
rows
包含查询结果的 ReportDataRow 对象列表。每行中的字符串值按位置与 columnHeaders 对齐。
totalRow
一个汇总行,表示所有匹配指标的总和。无法求和的维度字段和指标(例如覆盖面指标,如 uniqueReachTotalReach)在此行中为空 ("")。
nextPageToken
一种令牌,用于在后续请求中检索下一页(如果存在其他行)。

延迟和超时

由于这是一个同步端点,因此查询会立即执行,并且数据会直接在响应中返回(最多达到 maxResults 分页限制)。查询的最长执行时间为 60 秒。如果查询超出此限制,API 会终止操作并返回 HTTP 503 Service Unavailable 错误。

如果您遇到此错误,请尝试缩小日期范围、缩小过滤范围(例如按特定广告客户或广告系列进行过滤),或减少请求的维度和指标数量。或者,使用 reports.run 运行 Report 以异步生成可下载的报告文件。

查询限制和约束

reportdata.query 端点会强制执行多项限制,以确保响应可靠。违反这些限制的请求会被拒绝,并返回 HTTP 400 Bad Request 响应。

日期范围限制

  • 对于自定义日期范围,startDate 必须在所请求报告数据类型的数据有效期限内。如需了解详情,请参阅数据可用性

指标和维度限制

  • 必须在 metricNames 中提供至少一项指标。
  • metricNamesdimensionNames 列表中的指标和维度必须是唯一的。
  • 标记为仅下载的指标和维度无法用于这些查询。

配额限制

向此端点发出的请求会消耗以下配额:

  • 用户速率限制:每位用户每分钟 120 个请求(2 QPS)
  • 每个项目的每日限额:每个项目每天 10,000 次请求

超出这些限制的请求会失败,并显示 HTTP 429 Too Many Requests 错误。如果您翻阅结果,则对新页面的每次请求(使用 pageToken 参数)都将计为单独的查询,并会消耗此配额。