Partager via


Compter les lignes à l’aide d’OData

Utilisez l’option de requête $count=true pour inclure un décompte des entités correspondant aux critères de filtre, pouvant aller jusqu’à 5 000 pour les tables standard et 500 pour les tables élastiques.

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=accountid&$count=true
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0

Réponse :

HTTP/1.1 200 OK
OData-Version: 4.0

{
    "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#accounts(accountid)",
    "@odata.count": 9,
    "value": [
        {
            "@odata.etag": "W/\"81359849\"",
            "accountid": "78914942-34cb-ed11-b596-0022481d68cd"
        },
        ... <Truncated for brevity>
    ]
}

L’annotation de réponse @odata.count contient le nombre de lignes, pouvant aller jusqu’à 5 000 pour les tables standard et 500 pour les tables élastiques, qui correspondent aux critères de filtre, quelle que soit la taille de page demandée.

Nonte

Si vous souhaitez récupérer un instantané au cours des dernières 24 heures du nombre total de lignes pour une table au-delà de 5 000 pour les tables standard et 500 pour les tables élastiques, utilisez la fonction RetrieveTotalRecordCount.

Si la valeur du décompte est égale à la limite pour le type de table que vous utilisez et que vous souhaitez savoir si le décompte correspond exactement à ce nombre ou est supérieur à ce nombre, vous pouvez ajouter l’en-tête de requête préféré pour envoyer la préférence odata.include-annotations pour ces annotations :

  • Microsoft.Dynamics.CRM.totalrecordcount
  • Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.totalrecordcount,Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded"

Cet en-tête ajoute les annotations suivantes au résultat :

  • @Microsoft.Dynamics.CRM.totalrecordcount
  • @Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded

Lorsqu’il est utilisé avec l’option de requête $count=true et qu’il existe plus de 5 000 enregistrements standard, les valeurs suivantes sont renvoyées :

"@odata.count": 5000,
"@Microsoft.Dynamics.CRM.totalrecordcount": 5000,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": true,

S’il y a moins de 5 000 enregistrements, le nombre réel est renvoyé.

"@odata.count": 58,
"@Microsoft.Dynamics.CRM.totalrecordcount": 58,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": false,

Si vous n’incluez pas l’option de requête $count=true, la valeur @Microsoft.Dynamics.CRM.totalrecordcount totale est -1.

L’exemple suivant montre qu’il y a dix comptes qui correspondent au $filter, mais que seuls les trois premiers comptes sont renvoyés :

Demande :

GET [Organization URI]/api/data/v9.2/accounts?$select=name?
&$filter=contains(name,'sample')
&$count=true  
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  
Prefer: odata.maxpagesize=3
Prefer: odata.include-annotations="Microsoft.Dynamics.CRM.*"

Réponse :

HTTP/1.1 200 OK  
Content-Type: application/json; odata.metadata=minimal  
OData-Version: 4.0  
Preference-Applied: odata.maxpagesize=3
Preference-Applied: odata.include-annotations="Microsoft.Dynamics.CRM.*"
  
{  
   "@odata.context":"[Organization URI]/api/data/v9.2/$metadata#accounts(name)",
   "@odata.count":10,
   "@Microsoft.Dynamics.CRM.totalrecordcount": 5000,
   "@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded": true,
   "value":[  
      {  
         "@odata.etag":"W/\"502482\"",
         "name":"Fourth Coffee (sample)",
         "accountid":"655eaf89-f083-e511-80d3-00155d2a68d3"
      },
      {  
         "@odata.etag":"W/\"502483\"",
         "name":"Litware, Inc. (sample)",
         "accountid":"675eaf89-f083-e511-80d3-00155d2a68d3"
      },
      {  
         "@odata.etag":"W/\"502484\"",
         "name":"Adventure Works (sample)",
         "accountid":"695eaf89-f083-e511-80d3-00155d2a68d3"
      }
   ],
   "@odata.nextLink":"[Organization URI]/api/data/v9.2/accounts?$select=name&$filter=contains(name,'sample')&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b695EAF89-F083-E511-80D3-00155D2A68D3%257d%2522%2520first%253d%2522%257b655EAF89-F083-E511-80D3-00155D2A68D3%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
}

Pour obtenir juste un nombre qui représente le nombre d’une collection, ajoutez /$count, comme dans l’exemple suivant :

Demande :

GET [Organization URI]/api/data/v9.2/accounts/$count  
Accept: application/json  
OData-MaxVersion: 4.0  
OData-Version: 4.0  

Réponse :

HTTP/1.1 200 OK  
Content-Type: text/plain  
OData-Version: 4.0  
  
10  

Étapes suivantes

Découvrez comment optimiser les performances.