Condividi tramite


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

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

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 del 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 suo 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, percentiles)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio 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.

Valori restituiti

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

Nota

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

Esempi

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, registrare ogni valore di Duration, arrotondato a 100 msec e quante volte è apparso il valore arrotondato (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 materializzare effettivamente tali record.

L'esempio seguente mostra i percentili ponderati. Uso del set di valori di latenza seguente 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 per i 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 da 20 ms (corrispondente al subset { 12, 12, 15, 15, 15, 18 })
  • Tre eventi nel bucket da 30 ms (corrispondente al subset { 21, 22, 26 })
  • Un evento nel bucket da 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

Restituisce 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 dinamico.

Sintassi

percentilesw_array(expr, weightExpr, percentiles)

Parametri

Nome Digita Obbligatorio 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.

Valori restituiti

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

Esempi

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]