将查询结果分页

为了处理包含大量行的结果集,Merchant Center 查询语言支持分页。除了响应正文中的一个输出字段 next_page_token 之外,reports.search 请求正文中还有两个参数可用于控制分页:page_sizepage_token

page_size 参数用于指定单次请求中要检索的行数上限。如果未指定,系统会自动将其设置为页面大小上限(即 1, 000 行)。

page_token 参数指定要返回的页面的令牌。如果未指定,则返回第一页。如需检索后续页面,应将从上一个 reports.search 调用收到的 next_page_token 值作为 page_token 提供。提供 page_token 时,调用中的所有其他参数都应与返回 page_token 的上一个调用一致,以避免意外行为。

示例:

SELECT
  segments.offer_id,
  metrics.impressions,
  metrics.clicks,
  metrics.ctr
FROM MerchantPerformanceView
WHERE segments.date BETWEEN '2021-12-01' AND '2021-12-31'

对于此查询,假设账号包含 10 万个 offer_ids,且 page_size 设置为 200。然后,结果集中将包含第一个响应中的 200 个 ReportRow 对象以及一个 next_page_token

如需检索接下来的 200 行,请使用相同的页面大小设置再发送一次请求,不过要将请求的 page_token 更新为前一响应的 next_page_token

以下是响应正文示例(前五个结果以及 next_page_token):

{
  "results": [
    {
      "segments": {
        "offerId": "12345"
      },
      "metrics": {
        "clicks": "0",
        "impressions": "59",
        "ctr": 0
      }
    },
    {
      "segments": {
        "offerId": "12346"
      },
      "metrics": {
        "clicks": "9625",
        "impressions": "276695",
        "ctr": 0.034785594246372356
      }
    },
    {
      "segments": {
        "offerId": "12347"
      },
      "metrics": {
        "clicks": "148",
        "impressions": "22045",
        "ctr": 0.0067135404853708325
      }
    },
    {
      "segments": {
        "offerId": "12348"
      },
      "metrics": {
        "clicks": "11",
        "impressions": "1100",
        "ctr": 0.01
      }
    },
    {
      "segments": {
        "offerId": "12349"
      },
      "metrics": {
        "clicks": "569",
        "impressions": "62977",
        "ctr": 0.0090350445400701838
      }
    },
    ...
  ],
  "nextPageToken": "CMgB"
}