為查詢結果分頁

為了處理含有大量資料列的結果集,Merchant Center 查詢語言支援分頁。除了在回應主體中的一個輸出欄位之外,reports.search 要求中也會使用兩個參數來控制分頁:page_sizepage_tokennext_page_token

page_size 參數可指定單一要求中可擷取的資料列數量上限。如未指定,系統會自動將頁面大小上限設為 1000 列。

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'

針對這項查詢,假設帳戶包含 100,000 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"
}