[comment]: # attributes: notoc

[comment]: # ({ac717204-ee60e21e})
# 1 Funzioni aggregate

Salvo diversa indicazione, tutte le funzioni elencate qui sono supportate in:

-   [Espressioni dei trigger](/manual/config/triggers/expression)
-   [Item calcolati](/manual/config/items/itemtypes/calculated)
-   [Macro di espressione](/manual/config/macros/expression_macros)

Le funzioni aggregate possono lavorare con uno dei seguenti elementi:

-   cronologia degli item, ad esempio, `min(/host/key,1h)`
-   [funzioni foreach](/manual/appendix/functions/aggregate/foreach) come
    unico parametro, ad esempio, `min(last_foreach(/*/key))` (solo negli item calcolati; non può essere usato nei trigger)

Le funzioni sono elencate senza informazioni aggiuntive. Fare clic sulla funzione per visualizzare i dettagli completi.

|Function|Description|
|--|--------|
|[avg](#avg)|Il valore medio di un item entro il periodo di valutazione definito.|
|[bucket_percentile](#bucket-percentile)|Calcola il percentile dai bucket di un istogramma.|
|[count](#count)|Il conteggio dei valori in un array restituito da una funzione foreach.|
|[histogram_quantile](#histogram-quantile)|Calcola il quantile φ dai bucket di un istogramma.|
|[item_count](#item-count)|Il conteggio degli item esistenti nella configurazione che corrispondono ai criteri del filtro.|
|[kurtosis](#kurtosis)|La "coda" della distribuzione di probabilità nei valori raccolti entro il periodo di valutazione definito.|
|[mad](#mad)|La deviazione assoluta mediana nei valori raccolti entro il periodo di valutazione definito.|
|[max](#max)|Il valore più alto di un item entro il periodo di valutazione definito.|
|[min](#min)|Il valore più basso di un item entro il periodo di valutazione definito.|
|[skewness](#skewness)|L'asimmetria della distribuzione di probabilità nei valori raccolti entro il periodo di valutazione definito.|
|[stddevpop](#stddevpop)|La deviazione standard della popolazione nei valori raccolti entro il periodo di valutazione definito.|
|[stddevsamp](#stddevsamp)|La deviazione standard del campione nei valori raccolti entro il periodo di valutazione definito.|
|[sum](#sum)|La somma dei valori raccolti entro il periodo di valutazione definito.|
|[sumofsquares](#sumofsquares)|La somma dei quadrati nei valori raccolti entro il periodo di valutazione definito.|
|[varpop](#varpop)|La varianza della popolazione dei valori raccolti entro il periodo di valutazione definito.|
|[varsamp](#varsamp)|La varianza del campione dei valori raccolti entro il periodo di valutazione definito.|

[comment]: # ({/ac717204-ee60e21e})

[comment]: # ({2acead3e-4d343eb8})
#### Parametri comuni

-   `/host/key` è un primo parametro comune obbligatorio per le funzioni
    che fanno riferimento alla cronologia dell'item dell'host
-   `(sec|#num)<:time shift>` è un secondo parametro comune per le
    funzioni che fanno riferimento alla cronologia dell'item dell'host, dove:
    -   **sec** - periodo massimo di [valutazione](/manual/config/triggers#evaluation-period) in secondi
        (si possono usare i [suffissi](/manual/appendix/suffixes) di tempo), oppure
    -   **\#num** - massimo [intervallo di valutazione](/manual/config/triggers#evaluation-period) negli ultimi
        valori raccolti (se preceduto da un cancelletto)
    -   **time shift** (facoltativo) consente di spostare all'indietro nel tempo il punto di valutazione. Vedere [ulteriori
        dettagli](/manual/config/triggers/expression#time-shift) sulla specifica del time shift.

[comment]: # ({/2acead3e-4d343eb8})

[comment]: # ({c645f0e4-fe53c04c})
### Dettagli della funzione

Alcune note generali sui parametri della funzione:

-   I parametri della funzione sono separati da una virgola
-   I parametri opzionali della funzione (o parti di parametro) sono indicati da
    `<` `>`
-   I parametri specifici della funzione sono descritti per ciascuna funzione
-   I parametri `/host/key` e `(sec|#num)<:time shift>` non devono mai essere
    racchiusi tra virgolette

[comment]: # ({/c645f0e4-fe53c04c})

[comment]: # ({85535fd1-f5993b4c})
##### avg(/host/key,(sec|#num)<:time shift>) {#avg}

Il valore medio di un item all'interno del periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzioni foreach](/manual/appendix/functions/aggregate/foreach) supportate: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Lo spostamento temporale è utile quando è necessario confrontare il valore medio corrente con il valore medio di un momento precedente.

Esempi:

```default
avg(/host/key,1h) #calcola il valore medio dell'ultima ora fino a ora
avg(/host/key,#5) #calcola il valore medio degli ultimi cinque valori
avg(/host/key,1h:now-1d) #calcola il valore medio di un'ora da 25 ore fa fino a 24 ore fa rispetto a ora
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #calcola il carico medio del processore per tutti i server MySQL
avg(/host/proc.num,5m)>300 #trigger se il numero medio di processi negli ultimi 5 minuti è stato superiore a 300
```

[comment]: # ({/85535fd1-f5993b4c})

[comment]: # ({9237fab4-af24d13f})
##### bucket_percentile(item filter,time period,percentage) {#bucket-percentile}

Calcola il percentile dai bucket di un istogramma.<br>

Parametri: 

-   **item filter** - vedere [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax);<br>
-   **time period** - vedere [time period](/manual/appendix/functions/aggregate/foreach#time-period);<br>
-   **percentage** - percentuale (0-100).

Commenti:

-   Supportata solo negli item calcolati;
-   Questa funzione è un alias di `histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1))`.

Esempi:

```default
bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #calcola il tempo di risposta al 95° percentile in 5 minuti
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #calcola la latenza API al 99° percentile
```

[comment]: # ({/9237fab4-af24d13f})

[comment]: # ({6e12bb62-3c498650})
##### count(func_foreach(item filter,<time period>),<operator>,<pattern>) {#count}

Il conteggio dei valori in un array restituito da una funzione foreach.<br>
Funzioni [foreach supportate](/manual/appendix/functions/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Parametri: 

-   **func_foreach** - funzione foreach per la quale deve essere conteggiato il numero di valori restituiti. Per i dettagli, vedere [foreach functions](/manual/appendix/functions/aggregate/foreach). Si noti che count_foreach e bucket_rate_foreach supportano [parametri aggiuntivi](/manual/appendix/functions/aggregate/foreach#additional-parameters).
-   **item filter** - vedere [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax);<br>
-   **time period** - vedere [time period](/manual/appendix/functions/aggregate/foreach#time-period);<br>
-   **operator** (deve essere racchiuso tra virgolette doppie). `operatori` supportati:<br>*eq* - uguale<br>*ne* - diverso<br>*gt* - maggiore<br>*ge* - maggiore o uguale<br>*lt* - minore<br>*le* - minore o uguale<br>*like* - corrisponde se contiene il pattern (sensibile alle maiuscole/minuscole)<br>*bitand* - AND bit a bit<br>*regexp* - corrispondenza sensibile alle maiuscole/minuscole dell'espressione regolare specificata in `pattern`<br>*iregexp* - corrispondenza non sensibile alle maiuscole/minuscole dell'espressione regolare specificata in `pattern`<br>
-   **pattern** - il pattern richiesto (gli argomenti stringa devono essere racchiusi tra virgolette doppie); supportato se *operator* è specificato nel terzo parametro.

Commenti: 

-   L'uso di **count()** con una funzione foreach basata sulla history (max_foreach, avg_foreach, ecc.) può avere implicazioni sulle prestazioni, mentre l'uso di **exists_foreach()**, che funziona solo con i dati di configurazione, non avrà questo effetto.
-   I parametri opzionali *operator* o *pattern* non possono essere lasciati vuoti dopo una virgola, ma solo omessi completamente.
-   Con *bitand* come terzo parametro, il quarto parametro `pattern` può essere specificato come due numeri, separati da '/': **number_to_compare_with/mask**. count() calcola l'"AND bit a bit" tra il valore e la *mask* e confronta il risultato con *number_to_compare_with*. Se il risultato dell'"AND bit a bit" è uguale a *number_to_compare_with*, il valore viene conteggiato.<br>Se *number_to_compare_with* e *mask* sono uguali, è sufficiente specificare solo la *mask* (senza '/').
-   Con *regexp* o *iregexp* come terzo parametro, il quarto parametro `pattern` può essere un'espressione regolare ordinaria o [globale](/manual/regular_expressions#global-regular-expressions) (che inizia con '@'). Nel caso delle espressioni regolari globali, la sensibilità alle maiuscole/minuscole viene ereditata dalle impostazioni dell'espressione regolare globale. Ai fini della corrispondenza regexp, i valori float saranno sempre rappresentati con 4 cifre decimali dopo '.'. Si noti inoltre che, per numeri grandi, la differenza tra la rappresentazione decimale (memorizzata nel database) e quella binaria (usata dal server Zabbix) può influire sulla 4a cifra decimale.

Esempi:

```default
count(max_foreach(/*/net.if.in[*],1h)) #calcola il numero di item net.if.in che hanno ricevuto dati nell'ultima ora fino a questo momento
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calcola il numero di file system con oltre il 95% di spazio su disco utilizzato
```

[comment]: # ({/6e12bb62-3c498650})

[comment]: # ({f07c0983-f3ad7158})
##### histogram_quantile(quantile,bucket1,value1,bucket2,value2,...) {#histogram-quantile}

Calcola il φ-quantile dai bucket di un histogram.<br>
Supporta la [funzione foreach](/manual/appendix/functions/aggregate/foreach): *bucket_rate_foreach*.

Parametri: 

-   **quantile** - 0 ≤ φ ≤ 1;<br>
-   **bucketN, valueN** - coppie di parametri inserite manualmente (>=2) oppure la risposta di [bucket_rate_foreach](/manual/appendix/functions/aggregate/foreach).

Commenti:

-   Supportata solo negli item calcolati;
-   Corrisponde funzionalmente a '[histogram\_quantile](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram-quantile)' di PromQL;
-   Restituisce -1 se i valori dell'ultimo bucket 'Infinity' (*"+inf"*) sono uguali a 0.

Esempi:

```default
histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
```

[comment]: # ({/f07c0983-f3ad7158})

[comment]: # ({90ddddd2-c8e3133a})
##### item_count(item filter) {#item-count}

Il numero di item esistenti nella configurazione che corrispondono ai criteri del filtro.<br>
Tipo di valore supportato: *Integer*.

Parametro: 

-   **item filter** - criteri per la selezione degli item, consente il riferimento tramite gruppo host, host, chiave dell'item e tag. Sono supportati i caratteri jolly. Vedere [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax) per ulteriori dettagli.<br>

Commenti:

-   Supportato solo negli item calcolati;
-   Funziona come alias della funzione *count(exists_foreach(item_filter))*.

Esempi:

```default
item_count(/*/agent.ping?[group="Host group 1"]) #calcola il numero di host con l'item agent.ping in "Host group 1"
```

[comment]: # ({/90ddddd2-c8e3133a})

[comment]: # ({ad613717-88a54099})
##### kurtosis(/host/key,(sec|#num)<:time shift>) {#kurtosis}

La "coda" della distribuzione di probabilità nei valori raccolti all'interno del periodo di valutazione definito. Vedi anche: [Kurtosis](https://en.wikipedia.org/wiki/Kurtosis).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzione foreach](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Esempi:

```default
kurtosis(/host/system.cpu.util[,user],5m)>5 #trigger su picchi improvvisi dell'utilizzo della CPU nell'arco di 5 minuti
```

[comment]: # ({/ad613717-88a54099})

[comment]: # ({1b18c768-bfb43a27})
##### mad(/host/key,(sec|#num)<:time shift>) {#mad}

La deviazione assoluta mediana nei valori raccolti entro il periodo di valutazione definito. Vedi anche: [Deviazione assoluta mediana](https://en.wikipedia.org/wiki/Median_absolute_deviation).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzione foreach](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedi [parametri comuni](#common-parameters).

Esempi:

```default
last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #trigger if the last CPU utilization value is statistically significant
```

[comment]: # ({/1b18c768-bfb43a27})

[comment]: # ({9ac9dd89-5882010b})
##### max(/host/key,(sec|#num)<:time shift>) {#max}

Il valore più alto di un item nell'intervallo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzioni foreach](/manual/appendix/functions/aggregate/foreach) supportate: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Esempi:

```default
max(/host/key,1h) - min(/host/key,1h) #calcola la differenza tra i valori massimo e minimo nell'ultima ora fino a ora (il delta dei valori)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #restituisce il massimo utilizzo del disco tra tutti i server Linux
```

[comment]: # ({/9ac9dd89-5882010b})

[comment]: # ({471d86a5-ffd1e499})
##### min(/host/key,(sec|#num)<:time shift>) {#min}

Il valore più basso di un item all'interno del periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzioni foreach](/manual/appendix/functions/aggregate/foreach) supportate: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Esempi:

```default
max(/host/key,1h) - min(/host/key,1h) #calcola la differenza tra i valori massimo e minimo nell'ultima ora fino a ora (il delta dei valori)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #restituisce il valore minimo dello stato operativo per qualsiasi interfaccia in tutti i Linux servers
```

[comment]: # ({/471d86a5-ffd1e499})

[comment]: # ({8d966168-6b6fb273})
##### skewness(/host/key,(sec|#num)<:time shift>) {#skewness}

L'asimmetria della distribuzione di probabilità nei valori raccolti all'interno del periodo di valutazione definito. Vedi anche: [Skewness](https://en.wikipedia.org/wiki/Skewness).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzione foreach](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Esempi:

```default
skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
```

[comment]: # ({/8d966168-6b6fb273})

[comment]: # ({0b3aca57-11c2ea25})
##### stddevpop(/host/key,(sec|#num)<:time shift>) {#stddevpop}

La deviazione standard della popolazione nei valori raccolti entro il periodo di valutazione definito. Vedi anche: [Deviazione standard](https://en.wikipedia.org/wiki/Standard_deviation).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzione foreach](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedere [parametri comuni](#common-parameters).

Esempi:

```default
stddevpop(/host/system.cpu.util[,user],10m)>7 #trigger if CPU usage fluctuates heavily (population standard deviation is above 7 over 10 minutes)
```

[comment]: # ({/0b3aca57-11c2ea25})

[comment]: # ({f7108164-1db77c44})
##### stddevsamp(/host/key,(sec|#num)<:time shift>) {#stddevsamp}

La deviazione standard campionaria nei valori raccolti all'interno del periodo di valutazione definito. Vedi anche: [Deviazione standard](https://en.wikipedia.org/wiki/Standard_deviation).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzione foreach](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Per il funzionamento di questa funzione sono necessari almeno due valori di dati.

Esempi:

```default
stddevsamp(/host/system.cpu.util[,user],10m)>7 #trigger se l'utilizzo della CPU fluttua in modo marcato (la deviazione standard campionaria è superiore a 7 nell'arco di 10 minuti)
```

[comment]: # ({/f7108164-1db77c44})

[comment]: # ({740c263a-0ecf79eb})
##### sum(/host/key,(sec|#num)<:time shift>) {#sum}

La somma dei valori raccolti entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzioni foreach](/manual/appendix/functions/aggregate/foreach) supportate: *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Esempi:

```default
sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #calcola il traffico di rete in ingresso totale per tutti i server Linux
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #calcola lo spazio totale su disco per tutti i server MySQL
sum(last_foreach(/*/net.dns[*,*,*])) #calcola il numero totale di controlli DNS riusciti
```

[comment]: # ({/740c263a-0ecf79eb})

[comment]: # ({57e39842-6f6556f2})
##### sumofsquares(/host/key,(sec|#num)<:time shift>) {#sumofsquares}

La somma dei quadrati dei valori raccolti entro il periodo di valutazione definito.<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[Funzione foreach](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedere i [parametri comuni](#common-parameters).

Esempi:

```default
sumofsquares(/host/calculated.net.if.rate,1m) #la somma dei quadrati per il tasso di traffico di rete (in ingresso vs in uscita)
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #la somma dei quadrati per gli ultimi valori del traffico di rete in ingresso su tutti i server Linux
```

[comment]: # ({/57e39842-6f6556f2})

[comment]: # ({a61bfa35-d299bd33})
##### varpop(/host/key,(sec|#num)<:time shift>) {#varpop}

La varianza della popolazione dei valori raccolti all'interno del periodo di valutazione definito. Vedi anche: [Variance](https://en.wikipedia.org/wiki/Variance).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[foreach function](/manual/appendix/functions/aggregate/foreach) supportata: *last_foreach*.

Parametri: vedi [common parameters](#common-parameters).

Esempi:

```default
varpop(/host/system.cpu.util[,user],10m)>50 #trigger se l'utilizzo della CPU fluttua molto (la varianza è superiore a 50 in 10 minuti)
```

[comment]: # ({/a61bfa35-d299bd33})

[comment]: # ({146891fb-b1bc041c})
##### varsamp(/host/key,(sec|#num)<:time shift>) {#varsamp}

La varianza campionaria dei valori raccolti all'interno del periodo di valutazione definito. Vedi anche: [Variance](https://en.wikipedia.org/wiki/Variance).<br>
Tipi di valore supportati: *Float*, *Integer*.<br>
[foreach function] supportata: *last_foreach*.

Parametri: vedere [common parameters](#common-parameters).

Per il funzionamento di questa funzione sono necessari almeno due valori di dati.

Esempi:

```default
varsamp(/host/system.cpu.util[,user],10m)>50 #trigger se l'utilizzo della CPU fluttua molto (la varianza campionaria è superiore a 50 in 10 minuti)
```

[comment]: # ({/146891fb-b1bc041c})

[comment]: # ({ba59dd3a-541616fc})
Vedi [tutte le funzioni supportate](/manual/appendix/functions).

[comment]: # ({/ba59dd3a-541616fc})


