Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
FetchXML incluye características de agrupación y agregación que permiten calcular la suma, el promedio, el mínimo, el máximo y el recuento en varias filas de datos.
Para devolver un valor agregado, debe:
Establezca el atributo fetch element
aggregateen true.Establezca el
aliasatributo para cada elemento de atributo.Establezca el
aggregateatributo para cada elemento de atributo en una de estas funciones de agregado:Función Valor devuelto avgValor medio de los valores de columna con datos. countNúmero de filas. countcolumnNúmero de filas con datos en esa columna. maxValor máximo de las filas de esa columna. minEl valor mínimo de las filas dentro de esa columna. sumEl valor total de los valores de la columna con datos.
Tenga en cuenta los siguientes puntos:
- Los valores NULL no se consideran al calcular valores agregados.
- Puede usar datos de tablas combinadas mediante el elemento link-entity.
- Puede aplicar filtros para limitar los resultados como con cualquier consulta.
Example
Supongamos que tiene 10 registros de cuenta con los siguientes datos:
| Número de empleados | Nombre | Dirección 1 Ciudad | Creadas el |
|---|---|---|---|
| NULO | Cuenta de ejemplo | NULO | 8/25/2023 |
| 1,500 | Contoso Pharmaceuticals (ejemplo) | Sevilla | 3/25/2023 |
| 2,700 | Fabrikam, Inc. (ejemplo) | Lynnwood | 3/25/2023 |
| 2,900 | Blue Yonder Airlines (ejemplo) | Los Angeles | 3/25/2023 |
| 2,900 | City Power & Light (ejemplo) | Sevilla | 3/25/2023 |
| 3,900 | Bodega Coho (muestra) | Fénix | 3/25/2023 |
| 4,300 | Adventure Works (ejemplo) | Santa Cruz | 3/25/2023 |
| 4,800 | Alpine Ski House (ejemplo) | Missoula | 3/25/2023 |
| 6,000 | Litware, Inc. (ejemplo) | Dallas | 3/25/2023 |
| 6,200 | A. Datum Corporation (ejemplo) | Sevilla | 3/25/2023 |
La consulta siguiente devuelve datos agregados para la numberofemployees columna.
<fetch aggregate='true'>
<entity name='account'>
<attribute name='numberofemployees'
alias='Average'
aggregate='avg' />
<attribute name='numberofemployees'
alias='Count'
aggregate='count' />
<attribute name='numberofemployees'
alias='ColumnCount'
aggregate='countcolumn' />
<attribute name='numberofemployees'
alias='Maximum'
aggregate='max' />
<attribute name='numberofemployees'
alias='Minimum'
aggregate='min' />
<attribute name='numberofemployees'
alias='Sum'
aggregate='sum' />
</entity>
</fetch>
Los resultados son una sola fila:
--------------------------------------------------------------
| Average | Count | ColumnCount | Maximum | Minimum | Sum |
--------------------------------------------------------------
| 3,911 | 10 | 9 | 6,200 | 1,500 | 35,200 |
--------------------------------------------------------------
Valores de columna distintos
Al usar la countcolumn función de agregado, puede establecer el distinct atributo para devolver un recuento de valores únicos para la columna.
<attribute name='numberofemployees'
alias='ColumnCount'
aggregate='countcolumn'
distinct='true' />
Al configurarse para la consulta anterior, los resultados muestran 8 en lugar de 9 porque dos filas del conjunto de datos tienen un valor de 2,900 en el número de empleados.
Grouping
Agrupe los resultados de una consulta de agregado agregando un elemento de atributo con el groupby atributo en lugar del aggregate atributo . Al agrupar, debe especificar un elemento de orden con un alias valor establecido en el alias del grupo.
Por ejemplo, la consulta siguiente devuelve la suma de empleados y el recuento por ciudad:
<fetch aggregate='true'>
<entity name='account'>
<attribute name='numberofemployees'
alias='Total'
aggregate='sum' />
<attribute name='address1_city'
alias='Count'
aggregate='count' />
<attribute name='address1_city'
alias='City'
groupby='true' />
<order alias='City' />
</entity>
</fetch>
La consulta agrupa los resultados por valor de la Ciudad, combinando los resultados de las tres filas donde la Ciudad es "Redmond".
| Total | Total | City |
|---|---|---|
| 0 | 1 | NULO |
| 6,000 | 1 | Dallas |
| 2,900 | 1 | Los Angeles |
| 2,700 | 1 | Lynnwood |
| 4,800 | 1 | Missoula |
| 3,900 | 1 | Fénix |
| 10,600 | 3 | Sevilla |
| 4,300 | 1 | Santa Cruz |
Agrupación por partes de una fecha
Puede seleccionar qué parte de la fecha se va a usar al agrupar por fecha. Establezca el atributo attribute elementdategrouping en uno de los siguientes valores:
| Importancia | Description |
|---|---|
day |
Agrupar por día del mes |
week |
Agrupar por semana del año |
month |
Agrupar por mes del año |
quarter |
Agrupar por trimestre del año fiscal |
year |
Agrupar por año |
fiscal-period |
Agrupar por período del año fiscal |
fiscal-year |
Agrupar por año fiscal |
Más información sobre la configuración del año fiscal
De forma predeterminada, las agrupaciones de fechas usan la zona horaria del usuario. Establezca el elemento de atributousertimezone en "false" para especificar que se use la zona horaria UTC en su lugar.
La siguiente consulta agrupa los registros de cuenta mostrando el número de empleados según cuándo se crearon los registros.
<fetch aggregate='true'>
<entity name='account'>
<attribute name='numberofemployees'
alias='Total'
aggregate='sum' />
<attribute name='createdon'
alias='Day'
groupby='true'
dategrouping='day' />
<attribute name='createdon'
alias='Week'
groupby='true'
dategrouping='week' />
<attribute name='createdon'
alias='Month'
groupby='true'
dategrouping='month' />
<attribute name='createdon'
alias='Year'
groupby='true'
dategrouping='year' />
<attribute name='createdon'
alias='FiscalPeriod'
groupby='true'
dategrouping='fiscal-period' />
<attribute name='createdon'
alias='FiscalYear'
groupby='true'
dategrouping='fiscal-year' />
<order alias='Month' />
</entity>
</fetch>
En la tabla siguiente se muestra el resultado mediante el conjunto de datos de ejemplo mencionado anteriormente:
-----------------------------------------------------------------------
| Total | Day | Week | Month | Year | FiscalPeriod | FiscalYear |
-----------------------------------------------------------------------
| 35,200 | 25 | 12 | 3 | 2,023 | Quarter 1 FY2023 | FY2023 |
-----------------------------------------------------------------------
| 0 | 27 | 35 | 8 | 2,023 | Quarter 3 FY2023 | FY2023 |
-----------------------------------------------------------------------
Ejemplo de agrupación de fechas de período fiscal
En el ejemplo siguiente se muestra una expresión de agregación FetchXML que suma el número total de pedidos cumplidos y agrupa el resultado por semestre fiscal y año fiscal.
<fetch aggregate="true">
<entity name="order">
<attribute name="totalamount"
aggregate="sum"
alias="total" />
<attribute name="datefulfilled"
groupby="true"
dategrouping="fiscal-period" />
</entity>
</fetch>
Agregación de filas
Cuando una tabla tiene definida una relación jerárquica, puede devolver un agregado de fila en la columna de búsqueda de la relación jerárquica.
En el ejemplo siguiente se devuelve el número de cuentas relacionadas en una columna llamada CountChildren cuando la columna parentaccountid de registros de cuenta secundaria es igual a la columna actual de cuenta accountid.
<fetch top='5'>
<entity name='account'>
<attribute name='name' />
<attribute name='accountid'
alias='numberOfChildren'
rowaggregate='CountChildren' />
<order attribute='accountid'
descending='true' />
</entity>
</fetch>
Limitaciones
Las consultas que devuelven valores agregados están limitadas a 50 000 registros. Este límite ayuda a mantener el rendimiento y la confiabilidad del sistema. Si los criterios de filtro de la consulta devuelven más de 50 000 registros, obtendrá el siguiente error:
Número:
-2147164125
Código:8004E023
Mensaje:AggregateQueryRecordLimit exceeded. Cannot perform this operation.
Mensaje de error del cliente: se supera el límite máximo de registros. Reduzca el número de registros.
Para evitar este error, agregue filtros adecuados a la consulta para asegurarse de que no evalúa más de 50 000 registros. A continuación, ejecute la consulta varias veces y combine los resultados. Los filtros adecuados dependen de la naturaleza de los datos, pero podrían ser un intervalo de fechas o un subconjunto de valores en una columna de elección.
Límite por consulta
Incluso con el límite predeterminado para las consultas agregadas aplicadas, la consulta puede tardar algún tiempo en completarse. Puede usar el aggregatelimit atributo en una consulta para aplicar un límite inferior personalizado que devuelva el AggregateQueryRecordLimit exceeded error si los resultados son mayores que el límite personalizado.
En este ejemplo, el límite máximo de filas personalizado es 10:
<fetch aggregate='true'
aggregatelimit = '10'>
<entity name='opportunity'>
<attribute name='name'
alias='opportunity_count'
aggregate='count' />
</entity>
</fetch>
El límite por consulta no puede superar el límite de agregado predeterminado.
Pasos siguientes
Obtenga información sobre cómo contar filas.