Condividi tramite


percentilew(), percentilesw() (funzione di aggregazione)

La percentilew() funzione calcola una stima ponderata per il percentile di rango più vicino specificato della popolazione definita da expr. percentilesw() funziona in modo analogo a percentilew(). Tuttavia, percentilesw() può calcolare più valori percentili ponderati contemporaneamente, che è più efficiente rispetto al calcolo di ogni valore percentile ponderato separatamente.

I percentili ponderati calcolano i percentili in un set di dati assegnando a ogni valore nel set di dati di input un peso. In questo metodo, ogni valore viene considerato ripetuto un numero di volte uguale al relativo peso, che viene quindi usato per calcolare il percentile. Assegnando maggiore importanza a determinati valori, i percentili ponderati consentono di calcolare i percentili in modo "ponderato".

Per calcolare i percentili non ponderati, vedere percentiles().

Nota

Questa funzione viene usata insieme all'operatore summarize.

Sintassi

percentilew(Expr,weightExpr,Percentile)

percentilesw(Expr,weightExpr,Percentili)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Tipo Obbligatoria Descrizione
Expr string ✔️ Espressione da utilizzare per il calcolo delle aggregazioni.
weightExpr long ✔️ Peso da assegnare a ogni valore.
Percentile int o long ✔️ Costante che specifica il percentile.
Percentili int o long ✔️ Uno o più percentili delimitati da virgole.

Restituisce

Restituisce una tabella con le stime per l'espressione dei percentili specificati nel gruppo, ognuno in una colonna separata.

Nota

Per restituire i percentili in una singola colonna, vedere Restituire percentili come matrice.

Esempio

Calcolare i percentili ponderati

Si supponga di misurare in modo ripetitivo il tempo (durata) necessario per completare un'azione. Invece di registrare ogni valore della misura, si registra ogni valore di Duration, arrotondato a 100 msec e quante volte il valore arrotondato è apparso (BucketSize).

Usare summarize percentilesw(Duration, BucketSize, ...) per calcolare i percentili specificati in modo "ponderato". Considerare ogni valore di Duration come se fosse stato ripetuto bucketSize volte nell'input, senza dover effettivamente materializzare tali record.

L'esempio seguente mostra i percentili ponderati. Uso del set seguente di valori di latenza in millisecondi: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Per ridurre la larghezza di banda e l'archiviazione, eseguire la pre-aggregazione ai bucket seguenti: { 10, 20, 30, 40, 50, 100 }. Contare il numero di eventi in ogni bucket per produrre la tabella seguente:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

La tabella visualizza:

  • Otto eventi nel bucket da 10 ms (corrispondente al subset { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Sei eventi nel bucket 20-ms (corrispondente al subset { 12, 12, 15, 15, 15, 18 })
  • Tre eventi nel bucket 30-ms (corrispondente al subset { 21, 22, 26 })
  • Un evento nel bucket 40-ms (corrispondente al subset { 35 })

A questo punto, i dati originali non sono più disponibili. Solo il numero di eventi in ogni bucket. Per calcolare i percentili da questi dati, usare la percentilesw() funzione . Per i percentili 50, 75 e 99,9, usare la query seguente:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

Output

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Restituire percentili come matrice

Anziché restituire i valori in singole colonne, usare la percentilesw_array() funzione per restituire i percentili in una singola colonna di tipo matrice dinamica.

Sintassi

percentilesw_array(Expr,weightExpr,Percentili)

Parametri

Nome Tipo Obbligatoria Descrizione
Expr string ✔️ Espressione da utilizzare per il calcolo delle aggregazioni.
Percentili int, long o dynamic ✔️ Uno o più percentili delimitati da virgole o una matrice dinamica di percentili. Ogni percentile può essere un valore intero o long.
weightExpr long ✔️ Peso da assegnare a ogni valore.

Restituisce

Restituisce una stima per l'espressione dei percentili specificati nel gruppo come singola colonna di tipo matrice dinamica.

Esempio

Percentili delimitati da virgole

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, 50, 75, 99.9)

Output

percentile_LatencyBucket
[20, 20, 40]

Matrice dinamica di percentili

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, dynamic([50, 75, 99.9]))

Output

percentile_LatencyBucket
[20, 20, 40]