percentilew(), percentilesw() (sammansättningsfunktion)
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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] |