Udostępnij za pośrednictwem


percentilew(), percentilesw() (funkcja agregacji)

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Funkcja percentilew() oblicza ważone oszacowanie dla określonego percentyla najbliższej rangi populacji zdefiniowanej przez wyrażenie. percentilesw() działa podobnie do percentilew(). percentilesw() Można jednak obliczyć jednocześnie wiele ważonych wartości percentylu, co jest bardziej wydajne niż obliczanie poszczególnych ważonych wartości percentylu oddzielnie.

Ważone percentyle obliczają percentyle w zestawie danych, dając każdej wartości w wejściowym zestawie danych wagę. W tej metodzie każda wartość jest uważana za powtórzoną liczbę razy równą jej wadze, która jest następnie używana do obliczenia percentylu. Dając większe znaczenie niektórym wartościom, ważone percentyle zapewniają sposób obliczania percentyli w sposób "ważony".

Aby obliczyć nieważane percentyle, zobacz percentyls().

Uwaga

Ta funkcja jest używana w połączeniu z operatorem podsumowania.

Składnia

percentilew(expr, weightExpr, percentyl)

percentilesw(expr, weightExpr, percentyls)

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
wyrażenie string ✔️ Wyrażenie używane do obliczania agregacji.
weightExpr long ✔️ Waga do nadania każdej wartości.
percentyl int lub long ✔️ Stała określająca percentyl.
Percentyle int lub long ✔️ Co najmniej jeden percentyl rozdzielony przecinkami.

Zwraca

Zwraca tabelę z oszacowaniami dla expr określonych percentyli w grupie, z których każda jest w osobnej kolumnie.

Uwaga

Aby zwrócić percentyle w jednej kolumnie, zobacz Zwracanie percentyli jako tablicy.

Przykłady

Obliczanie ważonych percentyli

Załóżmy, że powtarzalnie mierzysz czas (czas trwania), który podejmuje akcję do ukończenia. Zamiast rejestrować każdą wartość miary, należy zarejestrować każdą wartość czasu trwania, zaokrągloną do 100 msec i liczbę wyświetleń zaokrąglonych wartości (BucketSize).

Użyj summarize percentilesw(Duration, BucketSize, ...) polecenia , aby obliczyć podane percentyle w sposób "ważony". Traktuj każdą wartość czasu trwania tak, jakby była powtarzana w danych wejściowych bucketSize, bez konieczności materializowania tych rekordów.

W poniższym przykładzie pokazano ważone percentyle. Używając następującego zestawu wartości opóźnienia w milisekundach: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Aby zmniejszyć przepustowość i magazyn, wykonaj wstępne agregacje do następujących zasobników: { 10, 20, 30, 40, 50, 100 }. Zlicz liczbę zdarzeń w każdym zasobniku, aby utworzyć następującą tabelę:

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

Zostanie wyświetlona tabela:

  • Osiem zdarzeń w zasobniku 10 ms (odpowiadającym podzestawowi { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Sześć zdarzeń w zasobniku 20 ms (odpowiadające podzestawowi { 12, 12, 15, 15, 15, 18 })
  • Trzy zdarzenia w zasobniku 30 ms (odpowiadające podzestawowi { 21, 22, 26 })
  • Jedno zdarzenie w zasobniku 40 ms (odpowiadające podzestawowi { 35 })

W tym momencie oryginalne dane nie są już dostępne. Tylko liczba zdarzeń w każdym zasobniku. Aby obliczyć percentyle z tych danych, użyj percentilesw() funkcji . W przypadku 50, 75 i 99,9 percentylu użyj następującego zapytania:

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

Wyjście

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Zwracanie percentyli jako tablicy

Zamiast zwracać wartości w poszczególnych kolumnach, użyj percentilesw_array() funkcji , aby zwrócić percentyle w jednej kolumnie typu tablicy dynamicznej.

Składnia

percentilesw_array(expr, weightExpr, percentyls)

Parametry

Nazwisko Type Wymagania opis
wyrażenie string ✔️ Wyrażenie używane do obliczania agregacji.
Percentyle int, long lub dynamic ✔️ Co najmniej jeden percentyl rozdzielony przecinkami lub tablica dynamiczna percentylu. Każdy percentyl może być liczbą całkowitą lub długą.
weightExpr long ✔️ Waga do nadania każdej wartości.

Zwraca

Zwraca oszacowanie dla eksplorowania określonych percentyli w grupie jako pojedynczej kolumny typu tablicy dynamicznej.

Przykłady

Percentyle rozdzielone przecinkami

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)

Wyjście

percentile_LatencyBucket
[20, 20, 40]

Tablica dynamiczna percentylów

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

Wyjście

percentile_LatencyBucket
[20, 20, 40]