Ir al contenido

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”.

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, min o max (por defecto sum). count cuenta las filas del grupo.
    • alias: nombre de la columna resultante; si lo omites, se usa el nombre de column.
    • 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 aggregations que no son objetos se ignoran.
ParámetroTipoPor defectoDescripción
tableDataTable—La DataTable a agrupar.
columnstring—Columna por la que agrupar.
aggregationsList—Lista de objetos {column, operation, alias}. operation: sum · count · avg · min · max. alias es el nombre de la columna resultante.

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 su alias.

Una tabla de entrada sin filas da una tabla resumen sin filas.

MensajeCausa 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.

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: ranking

El resultado tiene las columnas Cliente, TotalCliente y NumFacturas, con una fila por cliente.