Delen via


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]