Group By
Group By
Sección titulada «Group By»Tipo: group-by · Paquete: DataTable Activities v1.0.5 · Salida: DataTable
Agrupa las filas por los valores de una columna y calcula uno o más agregados por grupo, devolviendo una tabla resumen. Es el equivalente a una tabla dinámica: “total de ventas por cliente”, “cantidad de pedidos por estado”, “promedio por región”.
Cómo funciona
Sección titulada «Cómo funciona»Junta las filas que comparten el mismo valor en la column de agrupación y, para cada grupo, calcula las aggregations que definas. El resultado es una tabla nueva con una fila por grupo: la columna de agrupación más una columna por cada agregado.
- Los valores de agrupación se comparan como texto y sin distinguir mayúsculas:
"ACME"y"acme"caen en el mismo grupo (que conserva la escritura de la primera fila). Las celdas vacías forman un grupo con clave vacía. - Los grupos salen en el orden en que aparece cada valor por primera vez.
- Cada agregación es un objeto
{ column, operation, alias }:operation:sum,count,avg,minomax(por defectosum).countcuenta las filas del grupo.alias: nombre de la columna resultante; si lo omites, se usa el nombre decolumn.- Igual que en Aggregate Column, las celdas vacías o no numéricas se omiten y un grupo sin valores numéricos da
0.
- Los elementos de
aggregationsque no son objetos se ignoran.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
table | DataTable | — | La DataTable a agrupar. |
column | string | — | Columna por la que agrupar. |
aggregations | List | — | Lista de objetos {column, operation, alias}. operation: sum · count · avg · min · max. alias es el nombre de la columna resultante. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»Ninguno.
Devuelve una DataTable con una fila por grupo. Columnas:
- la columna de agrupación, con su mismo nombre, de tipo texto (
string); - una columna numérica (
double) por cada agregado, con el nombre de sualias.
Una tabla de entrada sin filas da una tabla resumen sin filas.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa y solución |
|---|---|
'table' debe ser una DataTable. | table no evalúa a una DataTable. |
'column' es obligatorio. | Falta la columna de agrupación. |
'aggregations' debe ser una lista (array). | aggregations no es una lista de objetos. |
Operación no soportada '…'. Usa: sum, count, avg, min, max. | Una agregación tiene una operación no válida. |
Column '…' does not belong to table …. | La columna de agrupación o la de una agregación no existe (mensaje de .NET, sin traducir). |
A column named '…' already belongs to this DataTable. | Dos agregaciones tienen el mismo alias, o un alias coincide con la columna de agrupación. Usa alias distintos. |
Ejemplo
Sección titulada «Ejemplo»Total y número de facturas por cliente. En el Designer, las agregaciones se definen con un editor visual: por cada una eliges columna, operación y un alias (nombre de la columna resultante).
Group By table = facturas column = "Cliente" aggregations: Total · sum → alias "TotalCliente" Total · count → alias "NumFacturas" → output: resumenPorCliente
Sort DataTable table = resumenPorCliente column = "TotalCliente" direction = desc → output: rankingEl resultado tiene las columnas
Cliente,TotalClienteyNumFacturas, con una fila por cliente.
Actividades relacionadas
Sección titulada «Actividades relacionadas»- Aggregate Column — un agregado global (sin agrupar).
- Sort DataTable — ordenar el resumen resultante.
- Filter DataTable — acotar antes de agrupar.