percentilew(), percentilesw() (aggregatiefunctie)
Met de percentilew()
functie wordt een gewogen schatting berekend voor het opgegeven dichtstbijzijnde rangschikkings percentiel van de populatie die is gedefinieerd door expr. percentilesw()
werkt op dezelfde manier als percentilew()
. Kan echter percentilesw()
meerdere gewogen percentielwaarden tegelijk berekenen, wat efficiënter is dan het afzonderlijk berekenen van elke gewogen percentielwaarde.
Gewogen percentielen berekenen percentielen in een gegevensset door elke waarde in de invoergegevensset een gewicht te geven. In deze methode wordt elke waarde beschouwd als een aantal keren herhaald, gelijk aan het gewicht, dat vervolgens wordt gebruikt om het percentiel te berekenen. Door bepaalde waarden belangrijker te maken, bieden gewogen percentielen een manier om percentielen op een 'gewogen' manier te berekenen.
Zie percentielen() voor het berekenen van niet-gewogen percentielen.
Notitie
Deze functie wordt gebruikt in combinatie met de samenvattende operator.
Syntax
percentilew(
Expr,
weightExpr,
Percentiel)
percentilesw(
Expr,
weightExpr,
percentielen)
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
Expr | string |
✔️ | De expressie die moet worden gebruikt voor aggregatieberekening. |
weightExpr | long |
✔️ | Het gewicht dat elke waarde moet worden opgegeven. |
Percentiel | int of lang | ✔️ | Een constante die het percentiel aangeeft. |
percentielen | int of lang | ✔️ | Een of meer door komma's gescheiden percentielen. |
Retouren
Retourneert een tabel met de schattingen voor expr van de opgegeven percentielen in de groep, elk in een afzonderlijke kolom.
Notitie
Zie Percentielen retourneren als een matrix als u de percentielen in één kolom wilt retourneren.
Voorbeelden
Gewogen percentielen berekenen
Stel dat u herhaaldelijk de tijd (duur) meet die nodig is om een actie te voltooien. In plaats van elke waarde van de meting vast te leggen, registreert u elke waarde van Duration, afgerond op 100 msec, en hoe vaak de afgeronde waarde is weergegeven (BucketSize).
Gebruik summarize percentilesw(Duration, BucketSize, ...)
om de opgegeven percentielen op een 'gewogen' manier te berekenen. Behandel elke waarde van Duration alsof deze BucketSize-tijden in de invoer is herhaald, zonder dat u deze records daadwerkelijk hoeft te materialiseren.
In het volgende voorbeeld ziet u gewogen percentielen.
Met behulp van de volgende set latentiewaarden in milliseconden: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }
.
Als u bandbreedte en opslag wilt verminderen, voert u vooraf aggregatie uit naar de volgende buckets: { 10, 20, 30, 40, 50, 100 }
. Tel het aantal gebeurtenissen in elke bucket om de volgende tabel te produceren:
let latencyTable = datatable (ReqCount:long, LatencyBucket:long)
[
8, 10,
6, 20,
3, 30,
1, 40
];
latencyTable
In de tabel wordt het volgende weergegeven:
- Acht gebeurtenissen in de bucket van 10 ms (die overeenkomt met de subset
{ 1, 1, 2, 2, 2, 5, 7, 7 }
) - Zes gebeurtenissen in de bucket van 20 ms (overeenkomend met de subset
{ 12, 12, 15, 15, 15, 18 }
) - Drie gebeurtenissen in de bucket van 30 ms (die overeenkomt met de subset
{ 21, 22, 26 }
) - Eén gebeurtenis in de bucket van 40 ms (die overeenkomt met de subset
{ 35 }
)
Op dit moment zijn de oorspronkelijke gegevens niet meer beschikbaar. Alleen het aantal gebeurtenissen in elke bucket. Gebruik de percentilesw()
functie om percentielen te berekenen op basis van deze gegevens.
Gebruik de volgende query voor de percentielen 50, 75 en 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)
Uitvoer
percentile_LatencyBucket_50 | percentile_LatencyBucket_75 | percentile_LatencyBucket_99_9 |
---|---|---|
20 | 20 | 40 |
Percentielen retourneren als een matrix
In plaats van de waarden in afzonderlijke kolommen te retourneren, gebruikt u de percentilesw_array()
functie om de percentielen in één kolom van het dynamische matrixtype te retourneren.
Syntax
percentilesw_array(
Expr,
weightExpr,
percentielen)
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
Expr | string |
✔️ | De expressie die moet worden gebruikt voor aggregatieberekening. |
percentielen | int, lang of dynamisch | ✔️ | Een of meer door komma's gescheiden percentielen of een dynamische matrix van percentielen. Elk percentiel kan een geheel getal of een lange waarde zijn. |
weightExpr | long |
✔️ | Het gewicht dat elke waarde moet worden opgegeven. |
Retouren
Retourneert een schatting voor expr van de opgegeven percentielen in de groep als één kolom van het dynamische matrixtype.
Voorbeelden
Door komma's gescheiden percentielen
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)
Uitvoer
percentile_LatencyBucket |
---|
[20, 20, 40] |
Dynamische matrix van percentielen
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]))
Uitvoer
percentile_LatencyBucket |
---|
[20, 20, 40] |
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor