Ir al contenido

Aggregate

El nodo Aggregate convierte una lista de registros en cifras: cuántos hay, cuánto suman, el importe medio, el mayor, el más antiguo… Sin agrupar devuelve un único objeto; si indicas un campo de agrupación devuelve una fila por grupo (ventas por producto, leads por estado, tickets por responsable) y puedes ordenarlas y quedarte con las primeras.

Reconoce números escritos con coma decimal ("20,5"). Lo que no sea un número se ignora en sumas, medias, mínimos y máximos; si una columna no tiene ningún número (por ejemplo fechas en formato AAAA-MM-DD), el mínimo y el máximo comparan los textos.

ParámetroTipoRequeridoDescripción
pathtextNoRuta a la lista (orders, data.items…). Vacío = los datos que llegan (o items / data si son una lista)
metricstextareaSíMétricas nombre=operación:campo, una por línea o separadas por comas
groupBytextNoCampo por el que agrupar (admite rutas, como cliente.pais)
sortBytextNoCon grupos: nombre de una métrica o del campo de agrupación; con - delante, de mayor a menor
limitnumberNoCon grupos: máximo de filas (top N). Vacío o 0 = todas
decimalsnumberNoRedondeo de sumas y medias, de 0 a 10 (por defecto 2)
outputKeytextNoCampo de salida (por defecto resumen)
OperaciónResultado
countNúmero de elementos. Con campo (count:email), solo los que lo tienen informado
sum:campoSuma de los valores numéricos
avg:campoMedia de los valores numéricos (null si no hay ninguno)
min:campo / max:campoMínimo / máximo (números o, si no hay números, textos como fechas ISO)
first:campo / last:campoPrimer / último valor informado
distinct:campoCuántos valores distintos hay
join:campoLos valores unidos con coma (útil para un resumen en texto)

Sin agrupar, con metrics = "pedidos=count, total=sum:importe":

{
"resumen": { "pedidos": 5, "total": 35.75 },
"count": 5
}

Agrupando por producto, con sortBy = "-total":

{
"resumen": [
{ "producto": "B", "pedidos": 1, "total": 20.25 },
{ "producto": "A", "pedidos": 3, "total": 15.5 }
],
"count": 5
}

El nodo conserva los datos que llegaron y añade el resultado y count (elementos de la lista). Si lo que llega es directamente una lista (por ejemplo, la salida de un Array Filter), la lista se conserva en items, para poder usarla después con List to Text (source: items). Los registros sin valor en el campo de agrupación forman un grupo con valor vacío.

{
"label": "Top productos",
"path": "pedidos",
"metrics": "ventas=sum:total, pedidos=count",
"groupBy": "producto",
"sortBy": "-ventas",
"limit": 5,
"outputKey": "top"
}

Combínalo con el nodo List to Text (source: top) para montar el mensaje del informe.

{
"label": "Resumen semanal",
"path": "ventas",
"metrics": "total=sum:importe, ticket_medio=avg:importe, mayor=max:importe, clientes=distinct:cliente_id, primera=min:fecha"
}
  • arrayFilter (Array Filter - para quedarte con los registros que interesan antes de resumir)
  • arrayGroupBy (Array Group By - agrupa sin calcular métricas)
  • listToText (List to Text - para convertir el resultado en texto o tabla)