Aggregate

logic_aggregate · logic · Logica & Flow · Disponibile · v1.0.0

Descrizione

Operatore enterprise di aggregazione (reducer) che collassa un array di N oggetti in un singolo valore aggregato secondo una funzione di reduce configurabile — l'equivalent della funzione SQL aggregate (SUM, COUNT, AVG, MIN, MAX, GROUP_CONCAT) applicato in-memory ai workflow business. Sette funzioni di aggregazione coprono il 95% dei use case business analytics e reporting: (1) sum — somma totale dei valori numerici di un campo (es. expectedRevenue di crm.lead per il forecast di pipeline del mese), (2) count — conteggio degli item (con filtro opzionale "count where status=open"), (3) avg — media aritmetica con gestione precision (default 2 decimal places), (4) min/max — estremi del dataset (utile per trovare l'ordine più alto/basso, la fattura più recente/vecchia), (5) concat — concatenazione di stringhe con separator configurabile (es. concat di tutti i nomi cliente del segmento separati da virgola per email digest), (6) collect — raccolta in array di tutti i valori di un campo (es. tutti gli email del segmento per bulk send), (7) median — mediana statistica più robusta dell'avg in presenza di outlier che distorcono la media. Group-by opzionale potentissimo: oltre all'aggregazione globale sull'intero array, è possibile aggregare PER GRUPPO sulla base di un campo discriminante (es. somma amount per customer_id, count orders per region, avg sentiment per source) — l'output diventa una Map { group_key: aggregatedValue, ... } che è pronta per essere serializzata come tabella di summary report nell'email cliente o nel PDF mensile del controlling. Pattern composto group_by + aggregate è il workhorse delle pipeline ETL leggere che evitano di dover scrivere SQL diretto al database. Gestione robusta dei valori non-numeric: per sum/avg/min/max, gli item con valore null/undefined/stringa-non-parsabile vengono skipati (non droppano il workflow) e tracciati in skippedNonNumeric output — pattern fail-safe vs naïve Math.sum() che esploderebbe su NaN. Type coercion intelligente: stringhe numerich "42.5" → 42.5, stringhe formato italiano "1.234,56" → 1234.56 (gestisce locale italiano con virgola decimale), boolean true/false → 1/0 per sum semantico. Output: { value (single value per aggregazione globale, o Map per group-by), inputCount (size array di partenza), processedCount (effettivamente aggregati dopo skip non-numeric), skippedNonNumeric (count item skipati con motivazione esplicita) }. Use case: KPI dashboard del business (somma fatturato giorno-corrente, count ordini settimanali, avg order value, max ordine del mese) tramite trigger_cron daily + db_query + aggregate; rollup analytics multi-tenant per super_admin che vede aggregato dei KPI per workspace_id; calcoli statistici post-query DB pre-visualizzazione (es. compute della percentile 95th senza dover writing SQL window functions); aggregare result di una loop iteration prima del send-email summary (loop processa 100 ordini → aggregate dei flag success/failed → email digest "85 successful, 15 failed, total amount €12.5k").

⚙️ Parametri di configurazione

Campi mostrati nell’editor quando si configura il nodo. Generati direttamente dal NodeDefconfigFields.

CampoTipoRequiredDefaultDescrizione
sourceExpression
Array da ridurre
expressionsiinput
input.records
Espressione JS che ritorna un array. Default = input.
reducer
Funzione di riduzione
enum
countsumavgminmaxmedianconcatcollect
sicountcount = quanti item. sum = somma (richiede campo). avg = media. min/max = estremi. median = mediana (robusta agli outlier). concat = concatena i valori del campo come stringa CSV. collect = raccoglie i valori del campo in un array. sum/avg/min/max/median SKIPPANO i valori non-numerici (contati in skippedNonNumeric).
field
Campo (per sum/avg/min/max/median/concat/collect)
stringno
es. amount, price, quantity
Nome del campo (supporta dot-path: order.amount). Ignorato per count. Se vuoto e gli item sono numeri/primitivi, opera su di essi.
precision
Decimali (avg/median)
numberno2Numero di decimali a cui arrotondare avg e median (default 2, es. importi/percentuali). Max 12. Non tocca sum/min/max.
groupBy
Raggruppa per (opzionale)
stringno
es. customer_id, region
Se settato, riduce per gruppo e output e` { [valoreCampo]: risultato }. Es. amount sum group-by customer = total per cliente.
maxItems
Max item (cap difensivo)
numberno100000Hard cap anti-OOM sul numero di item processati. Se l'input supera questa soglia viene troncato e l'aggregato è calcolato sui primi N (warning emesso). Default 100k, tetto 1M.

💡 Esempio configurazione

Snippet JSON del nodo come compare nel workflow. I valori sono derivati daidefaultValue e dai parametri required.

{
  "id": "node-logic_aggregate-1",
  "defId": "logic_aggregate",
  "label": "Aggregate",
  "config": {
    "sourceExpression": "input",
    "reducer": "count",
    "precision": 2,
    "maxItems": 100000
  }
}

🔗 Nodi correlati nella stessa categoria

Pronto a usare Aggregate?

Disponibile da subito in tutti i piani FlowForge. Provalo gratis senza carta di credito.

Inizia gratisSfoglia tutti i nodi