Ir al contenido

Array Group By

El nodo Array Group By toma un array de objetos y los agrupa por el valor de un campo especificado (con soporte dot-notation). El resultado es un objeto donde cada clave es un valor único encontrado en el campo, y su valor es el sub-array de elementos coincidentes.

Por ejemplo, con 10 registros que tienen el campo country con valores ES, FR e ITA, el nodo devuelve 3 sub-arrays, uno por país, más metadata (_groups, _groupCount, _total).

Soporta campos anidados (address.country), variables de otros nodos en el campo source, y un formato array opcional (_groupsArray) para usar con el nodo Iterator.

ParámetroTipoRequeridoDescripción
sourcetextNoRuta dot-notation al array dentro del data. Si se deja vacío, usa data directamente. Ejemplo: items, result.rows
groupBytextSíRuta dot-notation del campo por el que agrupar. Ejemplo: country, address.country, status
outputFormatselectNoobject (por defecto): solo el objeto agrupado. array: añade también _groupsArray para iterar con Iterator
{
"ES": [
{ "name": "Ana", "country": "ES" },
{ "name": "Luis", "country": "ES" }
],
"FR": [
{ "name": "Pierre", "country": "FR" },
{ "name": "Marie", "country": "FR" }
],
"ITA": [
{ "name": "Marco", "country": "ITA" }
],
"_groups": ["ES", "FR", "ITA"],
"_groupCount": 3,
"_total": 5,
"_ungrouped": 0
}

Añade el campo _groupsArray para iteración:

{
"ES": [...],
"FR": [...],
"ITA": [...],
"_groups": ["ES", "FR", "ITA"],
"_groupCount": 3,
"_total": 5,
"_ungrouped": 0,
"_groupsArray": [
{ "key": "ES", "items": [...], "count": 2 },
{ "key": "FR", "items": [...], "count": 2 },
{ "key": "ITA", "items": [...], "count": 1 }
]
}
{
"label": "Agrupar por País",
"groupBy": "country"
}
{
"label": "Agrupar por Provincia",
"groupBy": "address.province"
}

Array desde nodo anterior + formato Iterator

Sección titulada «Array desde nodo anterior + formato Iterator»
{
"label": "Agrupar Pedidos",
"source": "orders",
"groupBy": "status",
"outputFormat": "array"
}

Luego conectar a un Iterator sobre _groupsArray para procesar cada grupo de forma independiente.

{
"label": "Agrupar por Estado",
"source": "{{@SqlQuery.rows}}",
"groupBy": "status"
}
CampoDescripción
{clave}Sub-array de elementos para cada valor único encontrado
_groupsArray con los nombres de todos los grupos encontrados
_groupCountTotal de grupos distintos
_totalTotal de elementos en el array original
_ungroupedNúmero de elementos sin valor en el campo groupBy (agrupados bajo __sin_valor__)
_groupsArray(Solo con outputFormat: array) Array de {key, items, count} para iterar
  • Los registros sin valor en el campo groupBy se agrupan bajo la clave __sin_valor__
  • El campo source soporta variables dinámicas: {{@NombreNodo.campo}}, {{#N.campo}}
  • No requiere credenciales
  • Compatible con el nodo Iterator usando _groupsArray para procesar cada grupo como un flujo independiente
  • Si la entrada no es un array, devuelve error con mensaje descriptivo
  • Array Filter — filtrar elementos del array por condición
  • Iterator — iterar sobre cada grupo de forma independiente
  • Key Filter — filtrar por lista de valores exactos
  • Edit Fields — transformar campos antes de agrupar