Partager via


Compter des lignes à l’aide d’OData

Utilisez l’option $count=true de requête pour inclure un nombre d’entités qui correspondent aux critères de filtre, 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, 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.

Note

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

Si la valeur de nombre est égale à la limite pour le type de table que vous utilisez et que vous souhaitez savoir si le nombre est exactement ce nombre ou supérieur à ce nombre, ajoutez l’en-tête Prefer request pour envoyer les préférences 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

Lorsque vous utilisez cet en-tête avec l’option $count=true de requête et qu’il existe plus de 5 000 enregistrements standard, les valeurs suivantes sont retourné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.