percentil(), percentily() (agregační funkce)

Funkce percentile() vypočítá odhad pro zadaný percentil nejbližšího pořadí základního souboru definovaného výrazem. Přesnost závisí na hustotě populace v oblasti percentilu.

percentiles() funguje podobně percentile()jako . percentiles() Může však vypočítat více hodnot percentilu najednou, což je efektivnější než výpočet jednotlivých hodnot percentilu samostatně.

Pokud chcete vypočítat vážený percentil, podívejte se na percentilsw().

Poznámka

Tato funkce se používá ve spojení s operátorem summarize.

Syntax

percentile(Výraz,Percentil)

percentiles(Výraz,percentily)

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Výraz string ✔️ Výraz, který se má použít pro výpočet agregace.
Percentil int nebo long ✔️ Konstanta, která určuje percentil.
percentily int nebo long ✔️ Jeden nebo více percentilů oddělených čárkami

Návraty

Vrátí tabulku s odhady výrazů zadaných percentilů ve skupině, každý v samostatném sloupci.

Poznámka

Pokud chcete vrátit percentily v jednom sloupci, přečtěte si téma Vrácení percentilů jako pole.

Příklady

Výpočet jednoho percentilu

Následující příklad ukazuje hodnotu DamageProperty větší než 95 % sady vzorků a menší než 5 % sady vzorků.

StormEvents | summarize percentile(DamageProperty, 95) by State

Výstup

Zobrazená tabulka výsledků obsahuje pouze prvních 10 řádků.

Stav percentile_DamageProperty_95
ATLANTIC SOUTH 0
FLORIDA 40000
GRUZIE 143333
MISSISSIPPI 80000
AMERICKÁ SAMOA 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

Výpočet několika percentilů

Následující příklad ukazuje hodnotu DamageProperty současně vypočítanou pomocí hodnot 5, 50 (medián) a 95.

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

Výstup

Zobrazená tabulka výsledků obsahuje pouze prvních 10 řádků.

Stav percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLANTIC SOUTH 0 0 0
FLORIDA 0 0 40000
GRUZIE 0 0 143333
MISSISSIPPI 0 0 80000
AMERICKÁ SAMOA 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Vrácení percentilů jako pole

Místo vrácení hodnot v jednotlivých sloupcích použijte percentiles_array() funkci k vrácení percentilů v jednom sloupci dynamického typu matice.

Syntax

percentiles_array(Výraz,percentily)

Parametry

Název Typ Vyžadováno Popis
Výraz string ✔️ Výraz, který se má použít pro výpočet agregace.
percentily int, long nebo dynamic ✔️ Jeden nebo více percentilů oddělených čárkami nebo dynamické pole percentilů. Každý percentil může být celé číslo nebo dlouhá hodnota.

Návraty

Vrátí odhad pro expr zadaných percentilů ve skupině jako jeden sloupec typu dynamického pole.

Příklady

Percentily oddělené čárkami

Více percentilů lze získat jako pole v jednom dynamickém sloupci místo ve více sloupcích jako u percentilů().

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

Výstup

V tabulce výsledků se zobrazí pouze prvních 10 řádků.

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

Dynamické pole percentilů

Percentily pro percentiles_array lze zadat v dynamické matici celých čísel nebo čísel s plovoucí desetinou čárkou. Pole musí být konstantní, ale nemusí být literálové.

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

Výstup

V tabulce výsledků se zobrazí pouze prvních 10 řádků.

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

Percentil nejbližšího pořadí

P-ten percentil (0 <P<= 100) seznamu seřazených hodnot seřazených vzestupně je nejmenší hodnotou v seznamu. Procento P dat je menší nebo rovno hodnotě P-toho percentilu (z článku o percentilech na Wikipedii).

Definujte 0-tý percentil, který bude nejmenším členem základního souboru.

Poznámka

Vzhledem k přibližné povaze výpočtu nemusí být skutečně vrácená hodnota členem základního souboru. Definice nejbližšího pořadí znamená, že P=50 neodpovídá interpolační definici mediánu. Při vyhodnocování významu této nesrovnalosti pro konkrétní aplikaci by se měla vzít v úvahu velikost základního souboru a chyba odhadu .

Chyba odhadu v percentilech

Agregace percentilů poskytuje přibližnou hodnotu pomocí T-Digest.

Poznámka

  • Meze chyby odhadu se liší podle hodnoty požadovaného percentilu. Nejlepší přesnost je na obou koncích měřítka [0...100]. Percentily 0 a 100 jsou přesné minimální a maximální hodnoty rozdělení. Přesnost se postupně snižuje směrem ke středu měřítka. Nejhorší je na mediánu a je omezen na 1 %.
  • Meze chyb jsou pozorovány na pořadí, ne na hodnotě. Předpokládejme, že percentil(X; 50) vrátil hodnotu Xm. Odhad zaručuje, že alespoň 49 % a maximálně 51 % hodnot X je menší nebo rovno Xm. Neexistuje žádné teoretické omezení rozdílu mezi Xm a skutečnou mediánnou hodnotou X.
  • Odhad může někdy vést k přesné hodnotě, ale neexistují žádné spolehlivé podmínky, které by definovaly, kdy k tomu dojde.