percentielw(), percentielsw() (aggregatiefunctie)
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel-
De functie percentilew()
berekent een gewogen schatting voor de opgegeven dichtstbijzijnde percentiel- van de populatie die is gedefinieerd door expr-.
percentilesw()
werkt op dezelfde manier als percentilew()
.
percentilesw()
kan echter 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 dat gelijk is aan het gewicht, dat vervolgens wordt gebruikt om het percentiel te berekenen. Door bepaalde waarden meer belang te geven, bieden gewogen percentielen een manier om percentielen op een "gewogen" manier te berekenen.
Zie percentielen()om niet-gewogen percentielen() te berekenen.
Notitie
Deze functie wordt gebruikt in combinatie met de operator summarize.
Syntaxis
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 geven. |
percentiel | int of lang | ✔️ | Een constante die het percentiel aangeeft. |
percentielen | int of lang | ✔️ | Een of meer door komma's gescheiden percentielen. |
Retourneert
Retourneert een tabel met de schattingen voor expr van de opgegeven percentielen in de groep, elk in een afzonderlijke kolom.
Notitie
Als u de percentielen in één kolom wilt retourneren, raadpleegt u Percentielen retourneren als een matrix.
Voorbeelden
Gewogen percentielen berekenen
Stel dat u herhaaldelijk de tijd (duur) meet waarvoor een actie moet worden uitgevoerd. In plaats van elke waarde van de meting op te nemen, registreert u elke waarde van Duur, afgerond op 100 msec en hoe vaak de afgeronde waarde werd weergegeven (BucketSize).
Gebruik summarize percentilesw(Duration, BucketSize, ...)
om de opgegeven percentielen op een gewogen manier te berekenen. Behandel elke waarde van Duur alsof het aantal bucketSize-tijden in de invoer is herhaald, zonder deze records daadwerkelijk te hoeven materialiseren.
In het volgende voorbeeld ziet u gewogen percentielen.
Gebruik de volgende set latentiewaarden in milliseconden: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }
.
Voer vooraf aggregatie uit naar de volgende buckets om de bandbreedte en opslag te verminderen: { 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 (overeenkomend met subset
{ 1, 1, 2, 2, 2, 5, 7, 7 }
) - Zes gebeurtenissen in de bucket van 20 ms (overeenkomend met subset
{ 12, 12, 15, 15, 15, 18 }
) - Drie gebeurtenissen in de bucket van 30 ms (overeenkomend met subset
{ 21, 22, 26 }
) - Eén gebeurtenis in de bucket van 40 ms (overeenkomend met subset
{ 35 }
)
Op dit moment zijn de oorspronkelijke gegevens niet meer beschikbaar. Alleen het aantal gebeurtenissen in elke bucket. Als u percentielen van deze gegevens wilt berekenen, gebruikt u de functie percentilesw()
.
Gebruik de volgende query voor de 50, 75 en 99,9 percentielen:
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 matrix
In plaats van de waarden in afzonderlijke kolommen te retourneren, gebruikt u de functie percentilesw_array()
om de percentielen in één kolom met een dynamisch matrixtype te retourneren.
Syntaxis
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 geven. |
Retourneert
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] |