Compartir a través de


Recuento de filas mediante OData

Use la $count=true opción de consulta para incluir un recuento de entidades que coincidan con los criterios de filtro, hasta 5000 para tablas estándar y 500 para tablas elásticas.

Solicitud:

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

Respuesta:

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>
    ]
}

La anotación de respuesta @odata.count contiene el número de filas, hasta 5000 para tablas estándar y 500 para tablas elásticas, que coinciden con los criterios de filtro independientemente del tamaño de página solicitado.

Nota

Para recuperar una instantánea de las últimas 24 horas del número total de filas de una tabla con más de 5000 filas para tablas estándar y más de 500 filas para tablas elásticas, use la función RetrieveTotalRecordCount.

Si el valor de recuento es igual al límite del tipo de tabla que está usando y desea saber si el recuento es exactamente ese número o si es mayor, agregue el encabezado de solicitud Prefer para enviar la preferencia odata.include-annotations para estas anotaciones:

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

Este encabezado agrega las siguientes anotaciones al resultado:

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

Cuando se usa este encabezado con la $count=true opción de consulta y hay más de 5000 registros estándar, se devuelven los siguientes valores:

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

Si hay menos de 5000 registros, se devuelve el recuento real.

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

Si no incluye la opción de consulta $count=true, el total del valor @Microsoft.Dynamics.CRM.totalrecordcount es -1.

El siguiente ejemplo muestra que hay 10 cuentas que coinciden con $filter, pero solo se devuelven las tres primeras cuentas:

Solicitud:

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.*"

Respuesta:

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"
}

Para obtener solo un número que represente el conteo de una colección, agregue /$count, como en el siguiente ejemplo:

Solicitud:

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

Respuesta:

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

Pasos siguientes

Aprenda a optimizar el rendimiento.