percentilew(), percentilesw() (funkcja agregacji)
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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] |