Condividi tramite


percentile(), percentiles() (funzione di aggregazione)

La percentile() funzione calcola una stima per il percentile di rango più vicino specificato della popolazione definita da expr. L'accuratezza dipende dalla densità della popolazione nell'area del percentile.

percentiles() funziona in modo analogo a percentile(). Tuttavia, percentiles() può calcolare più valori percentili contemporaneamente, che è più efficiente del calcolo di ogni valore percentile separatamente.

Per calcolare i percentili ponderati, vedere percentilesw().

Nota

Questa funzione viene usata insieme all'operatore summarize.

Sintassi

percentile(expr, percentile)

percentiles(expr, percentiles)

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
expr string ✔️ Espressione da utilizzare per il calcolo delle aggregazioni.
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 il percentile singolo

Nell'esempio seguente viene illustrato il valore di DamageProperty maggiore del 95% del set di campioni e inferiore al 5% del set di campioni.

StormEvents | summarize percentile(DamageProperty, 95) by State

Output

La tabella dei risultati mostrata include solo le prime 10 righe.

Provincia percentile_DamageProperty_95
SUD ATLANTICO 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
SAMOA AMERICANE 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

Calcolare più percentili

Nell'esempio seguente viene illustrato il valore di DamageProperty calcolato contemporaneamente usando 5, 50 (median) e 95.

StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State

Output

La tabella dei risultati mostrata include solo le prime 10 righe.

Provincia percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
SUD ATLANTICO 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
SAMOA AMERICANE 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Restituisce percentili come matrice

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

Sintassi

percentiles_array(expr, 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.

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

È possibile ottenere più percentili come matrice in una singola colonna dinamica, anziché in più colonne come con percentili().

TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName

Output

Nella tabella dei risultati vengono visualizzate solo le prime 10 righe.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Matrice dinamica di percentili

I percentili per percentiles_array possono essere specificati in una matrice dinamica di numeri interi o a virgola mobile. La matrice deve essere costante, ma non deve essere letterale.

TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName

Output

Nella tabella dei risultati vengono visualizzate solo le prime 10 righe.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Percentile di rango più vicino

P-esimo percentile (0 <P<= 100) di un elenco di valori ordinati, ordinati in ordine crescente, è il valore più piccolo nell'elenco. La percentuale P dei dati è minore o uguale al valore percentile P (dall'articolo di Wikipedia sui percentili).

Definire 0-esimo percentile per essere il membro più piccolo della popolazione.

Nota

Data la natura approssimativa del calcolo, il valore restituito effettivo potrebbe non essere membro della popolazione. La definizione di classificazione più vicina indica che P=50 non è conforme alla definizione interpolativa della mediano. Quando si valuta il significato di questa discrepanza per l'applicazione specifica, è necessario tenere conto delle dimensioni della popolazione e di un errore di stima.

Errore di stima nei percentili

L'aggregazione dei percentili fornisce un valore approssimativo usando T-Digest.

Nota

  • I limiti nell'errore di stima variano a seconda del valore del percentile richiesto. L'accuratezza migliore è a entrambe le estremità della scala [0..100]. I percentili 0 e 100 sono i valori minimi e massimi esatti della distribuzione. L'accuratezza diminuisce gradualmente verso il centro della scala. È peggio al mediano ed è limitato all'1%.
  • I limiti di errore sono visibili nella classifica, non nel valore. Si supponga che percentile(X, 50) abbia restituito un valore Xm. La stima garantisce che almeno il 49% e il 51% dei valori di X siano minori o uguali a Xm. Non esiste alcun limite teorico sulla differenza tra Xm e il valore mediano effettivo di X.
  • La stima può talvolta produrre un valore preciso, ma non esistono condizioni affidabili da definire quando sarà il caso.