Udostępnij za pośrednictwem


percentyl(), percentyls() (funkcja agregacji)

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Funkcja percentile() oblicza oszacowanie dla określonego percentyla najbliższej rangi populacji zdefiniowanej przez wyrażenie. Dokładność zależy od gęstości populacji w regionie percentyla.

percentiles() działa podobnie do percentile(). percentiles() Można jednak obliczyć jednocześnie wiele wartości percentylu, co jest bardziej wydajne niż oddzielne obliczanie każdej wartości percentylu.

Aby obliczyć ważone percentyle, zobacz percentylsw().

Uwaga

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

Składnia

percentile(percentyl expr, )

percentiles(percentylów expr, )

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

Parametry

Nazwisko Type Wymagania opis
wyrażenie string ✔️ Wyrażenie używane do obliczania agregacji.
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 pojedynczego percentylu

W poniższym przykładzie pokazano, że wartość DamageProperty jest większa niż 95% zestawu próbek i mniejsza niż 5% zestawu próbek.

StormEvents | summarize percentile(DamageProperty, 95) by State

Wyjście

Wyświetlona tabela wyników zawiera tylko pierwsze 10 wierszy.

Stan percentile_DamageProperty_95
POŁUDNIE ATLANTYCKIE 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
SAMOA AMERYKAŃSKIE 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

Obliczanie wielu percentylów

W poniższym przykładzie przedstawiono wartość równocześnie obliczoną DamageProperty przy użyciu wartości 5, 50 (mediana) i 95.

StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State

Wyjście

Wyświetlona tabela wyników zawiera tylko pierwsze 10 wierszy.

Stan percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
POŁUDNIE ATLANTYCKIE 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
SAMOA AMERYKAŃSKIE 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Zwracanie percentyli jako tablicy

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

Składnia

percentiles_array(percentylów expr, )

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ą.

Zwraca

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

Przykłady

Percentyle rozdzielone przecinkami

Wiele percentyli można uzyskać jako tablicę w jednej kolumnie dynamicznej, zamiast w wielu kolumnach, tak jak w przypadku percentylu().

TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName

Wyjście

W tabeli wyników są wyświetlane tylko pierwsze 10 wierszy.

SensorName percentiles_Value avg_Value
czujnik-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
czujnik-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
czujnik-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
czujnik-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
czujnik-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
czujnik-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
czujnik-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
czujnik-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
czujnik-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
czujnik-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Tablica dynamiczna percentylów

Percentyle dla percentiles_array elementu można określić w dynamicznej tablicy liczb całkowitych lub zmiennoprzecinkowych. Tablica musi być stała, ale nie musi być literałem.

TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName

Wyjście

W tabeli wyników są wyświetlane tylko pierwsze 10 wierszy.

SensorName percentiles_Value avg_Value
czujnik-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
czujnik-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
czujnik-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
czujnik-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
czujnik-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
czujnik-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
czujnik-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
czujnik-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
czujnik-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
czujnik-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Percentyl najbliższej rangi

P-th percentyl (0 <P<= 100) listy uporządkowanych wartości posortowanych w kolejności rosnącej jest najmniejszą wartością na liście. Wartość P danych jest mniejsza lub równa wartości percentylu P (z artykułu w Wikipedii na percentylach).

Zdefiniuj 0. percentylów jako najmniejszego członka populacji.

Uwaga

Biorąc pod uwagę zbliżający się charakter obliczenia, rzeczywista zwrócona wartość może nie być członkiem populacji. Definicja najbliższej rangi oznacza, że P=50 nie jest zgodna z definicją interpolacyjną mediany. Podczas oceny istotności tej rozbieżności dla określonej aplikacji należy wziąć pod uwagę wielkość populacji i błąd szacowania.

Błąd szacowania w percentylach

Agregacja percentyli zapewnia przybliżoną wartość przy użyciu T-Digest.

Uwaga

  • Granice błędu szacowania różnią się w zależności od wartości żądanego percentylu. Najlepszą dokładnością jest na obu końcach skali [0..100]. Percentyle 0 i 100 to dokładne wartości minimalne i maksymalne rozkładu. Dokładność stopniowo zmniejsza się w kierunku środka skali. Jest to najgorsze w medianie i jest ograniczona do 1%.
  • Ograniczenia błędów są obserwowane w klasyfikacji, a nie na wartości. Załóżmy, że percentyl(X, 50) zwrócił wartość Xm. Oszacowanie gwarantuje, że co najmniej 49% i co najwyżej 51% wartości X są mniejsze lub równe Xm. Nie ma teoretycznego limitu różnicy między Xm a rzeczywistą medianą wartości X.
  • Szacowanie może czasami spowodować dokładną wartość, ale nie ma wiarygodnych warunków do zdefiniowania, kiedy tak będzie.