Array Group By
Descripción
Sección titulada «Descripción»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.
Configuración
Sección titulada «Configuración»Parámetros
Sección titulada «Parámetros»| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| source | text | No | Ruta dot-notation al array dentro del data. Si se deja vacío, usa data directamente. Ejemplo: items, result.rows |
| groupBy | text | Sí | Ruta dot-notation del campo por el que agrupar. Ejemplo: country, address.country, status |
| outputFormat | select | No | object (por defecto): solo el objeto agrupado. array: añade también _groupsArray para iterar con Iterator |
Por defecto (outputFormat: object)
Sección titulada «Por defecto (outputFormat: object)»{ "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}Con outputFormat: array
Sección titulada «Con outputFormat: array»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 } ]}Ejemplos de Uso
Sección titulada «Ejemplos de Uso»Agrupar por país
Sección titulada «Agrupar por país»{ "label": "Agrupar por País", "groupBy": "country"}Agrupar por campo anidado
Sección titulada «Agrupar por campo anidado»{ "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.
Agrupar con referencia cross-node
Sección titulada «Agrupar con referencia cross-node»{ "label": "Agrupar por Estado", "source": "{{@SqlQuery.rows}}", "groupBy": "status"}Campos de Salida
Sección titulada «Campos de Salida»| Campo | Descripción |
|---|---|
{clave} | Sub-array de elementos para cada valor único encontrado |
_groups | Array con los nombres de todos los grupos encontrados |
_groupCount | Total de grupos distintos |
_total | Total de elementos en el array original |
_ungrouped | Nú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
groupByse agrupan bajo la clave__sin_valor__ - El campo
sourcesoporta variables dinámicas:{{@NombreNodo.campo}},{{#N.campo}} - No requiere credenciales
- Compatible con el nodo Iterator usando
_groupsArraypara procesar cada grupo como un flujo independiente - Si la entrada no es un array, devuelve error con mensaje descriptivo
Nodos Relacionados
Sección titulada «Nodos Relacionados»- 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