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] |
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per