Paginer les résultats d'une requête

Pour gérer les ensembles de résultats contenant un grand nombre de lignes, le langage de requête Merchant Center est compatible avec la pagination. Deux paramètres permettent de contrôler la pagination dans le corps de la requête reports.search : page_size et page_token, en plus d'un champ de sortie dans le corps de la réponse : next_page_token.

Le paramètre page_size spécifie le nombre maximal de lignes à récupérer dans une seule requête. S'il n'est pas spécifié, cette valeur est automatiquement définie sur la taille maximale de page (1 000 lignes).

Le paramètre page_token spécifie le jeton de la page à renvoyer. S'il n'est pas spécifié, la première page est renvoyée. Pour récupérer une page suivante, la valeur reçue comme next_page_token de l'appel reports.search précédent doit être fournie en tant que page_token. Lorsqu'un page_token est fourni, tous les autres paramètres de l'appel doivent correspondre à l'appel précédent qui a renvoyé le page_token pour éviter tout comportement inattendu.

Exemple

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

Pour cette requête, supposons que le compte contient 100 000 offer_ids et que le paramètre page_size soit défini sur 200. L'ensemble de résultats contiendra alors 200 objets ReportRow dans la première réponse, ainsi qu'un champ next_page_token.

Pour récupérer les 200 lignes suivantes, renvoyez la requête avec la même taille de page, mais mettez à jour le page_token de la requête avec le next_page_token de la réponse précédente.

Voici un exemple de corps de réponse (les cinq premiers résultats plus le champ 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"
}