Dela via


percentilew(), percentilesw() (sammansättningsfunktion)

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Funktionen percentilew() beräknar en viktad uppskattning för den angivna av populationen som definieras av uttr. percentilesw() fungerar på samma sätt som percentilew(). Men percentilesw() kan beräkna flera viktade percentilvärden samtidigt, vilket är effektivare än att beräkna varje viktat percentilvärde separat.

Viktade percentiler beräknar percentiler i en datamängd genom att ge varje värde i indatauppsättningen en vikt. I den här metoden anses varje värde upprepas ett antal gånger som är lika med dess vikt, som sedan används för att beräkna percentilen. Genom att ge större betydelse för vissa värden ger viktade percentiler ett sätt att beräkna percentiler på ett "viktat" sätt.

Information om hur du beräknar oviktade percentiler finns i percentiler().

Not

Den här funktionen används tillsammans med operatorn summarize.

Syntax

percentilew( uttr,weightExpr,percentil)

percentilesw( uttr,weightExpr,percentiler)

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Krävs Beskrivning
uttr string ✔️ Uttrycket som ska användas för aggregeringsberäkning.
weightExpr long ✔️ Vikten för att ge varje värde.
percentil int eller long ✔️ En konstant som anger percentilen.
percentiler int eller long ✔️ En eller flera kommaavgränsade percentiler.

Returnerar

Returnerar en tabell med uppskattningarna för uttr av de angivna percentilerna i gruppen, var och en i en separat kolumn.

Not

Om du vill returnera percentilerna i en enda kolumn kan du läsa Returnera percentiler som en matris.

Exempel

Beräkna viktade percentiler

Anta att du mäter den tid (varaktighet) som krävs för att slutföra en åtgärd. I stället för att registrera varje värde för mätningen registrerar du varje värde för Varaktighet, avrundat till 100 msec och hur många gånger det avrundade värdet visades (BucketSize).

Använd summarize percentilesw(Duration, BucketSize, ...) för att beräkna de angivna percentilerna på ett "viktat" sätt. Behandla varje värde för Varaktighet som om det upprepades BucketSize-tider i indata, utan att behöva materialisera dessa poster.

I följande exempel visas viktade percentiler. Använd följande uppsättning svarstidsvärden i millisekunder: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Om du vill minska bandbredden och lagringen gör du föraggregering till följande bucketar: { 10, 20, 30, 40, 50, 100 }. Räkna antalet händelser i varje bucket för att skapa följande tabell:

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

Tabellen visar:

  • Åtta händelser i bucketen 10 ms (motsvarande delmängden { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Sex händelser i bucketen på 20 ms (motsvarande delmängden { 12, 12, 15, 15, 15, 18 })
  • Tre händelser i bucketen 30 ms (motsvarande delmängden { 21, 22, 26 })
  • En händelse i bucketen 40 ms (motsvarande delmängden { 35 })

I det här läget är de ursprungliga data inte längre tillgängliga. Endast antalet händelser i varje bucket. Om du vill beräkna percentiler från dessa data använder du funktionen percentilesw(). Använd följande fråga för percentilerna 50, 75 och 99,9:

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

utdata

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Returnera percentiler som en matris

I stället för att returnera värdena i enskilda kolumner använder du funktionen percentilesw_array() för att returnera percentilerna i en enda kolumn av dynamisk matristyp.

Syntax

percentilesw_array( uttr,weightExpr,percentiler)

Parametrar

Namn Typ Krävs Beskrivning
uttr string ✔️ Uttrycket som ska användas för aggregeringsberäkning.
percentiler int, long eller dynamic ✔️ En eller flera kommaavgränsade percentiler eller en dynamisk matris med percentiler. Varje percentil kan vara ett heltal eller ett långt värde.
weightExpr long ✔️ Vikten för att ge varje värde.

Returnerar

Returnerar en uppskattning för uttr av de angivna percentilerna i gruppen som en enda kolumn av dynamisk matristyp.

Exempel

Kommaavgränsade percentiler

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)

utdata

percentile_LatencyBucket
[20, 20, 40]

Dynamisk matris med percentiler

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]))

utdata

percentile_LatencyBucket
[20, 20, 40]