Sdílet prostřednictvím


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

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Funkce percentilew() vypočítá vážený odhad zadaného percentilu nejbližšího pořadí základního souboru definovaného výrazem. percentilesw() funguje podobně percentilew()jako . percentilesw() Lze však vypočítat více vážených hodnot percentilu najednou, což je efektivnější než výpočet každé vážené percentilové hodnoty samostatně.

Vážené percentily vypočítají percentily v datové sadě tak, že každé hodnotě ve vstupní datové sadě dávají váhu. V této metodě se každá hodnota považuje za opakovanou kolikrát se rovná její hmotnosti, která se pak použije k výpočtu percentilu. Díky větší důležitosti určitým hodnotám poskytují vážené percentily způsob, jak vypočítat percentily "váženým" způsobem.

Pokud chcete vypočítat neváhu percentilů, podívejte se na percentily().

Poznámka:

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

Syntaxe

percentilew(výraz weightExpr, percentil, )

percentilesw(výraz weightExpr, percentils, )

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

Parametry

Název Type Požadováno Popis
výraz string ✔️ Výraz, který se má použít pro výpočet agregace.
weightExpr long ✔️ Váha, která má dát každou hodnotu.
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ýrazu zadaných percentilů ve skupině, z nichž každý je v samostatném sloupci.

Poznámka:

Pokud chcete vrátit percentily v jednom sloupci, podívejte se na návratové percentily jako pole.

Příklady

Výpočet vážených percentilů

Předpokládejme, že opakovaně měříte čas (Doba trvání), kterou provede akce k dokončení. Místo zaznamenávání každé hodnoty měření zaznamenáte každou hodnotu Duration, zaokrouhlíte na 100 msec a kolikrát se zobrazila zaokrouhlená hodnota (BucketSize).

Slouží summarize percentilesw(Duration, BucketSize, ...) k výpočtu zadaných percentilů "váženým" způsobem. Zacházejte s každou hodnotou Duration, jako by se ve vstupu opakovala doba BucketSize, aniž by bylo nutné materializovat tyto záznamy.

Následující příklad ukazuje vážené percentily. Pomocí následující sady hodnot latence v milisekundách: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Pokud chcete snížit šířku pásma a úložiště, proveďte před agregaci následující kontejnery: { 10, 20, 30, 40, 50, 100 }. Spočítejte počet událostí v každém kbelíku, aby se vytvořila následující tabulka:

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

Zobrazí se tabulka:

  • Osm událostí v kontejneru 10 ms (odpovídající podmnožině { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Šest událostí v kbelíku 20 ms (odpovídající podmnožině { 12, 12, 15, 15, 15, 18 })
  • Tři události v kontejneru 30 ms (odpovídající podmnožině { 21, 22, 26 })
  • Jedna událost v kbelíku 40 ms (odpovídající podmnožině { 35 })

V tomto okamžiku už původní data nejsou k dispozici. Pouze počet událostí v každém kontejneru. K výpočtu percentilů z těchto dat použijte percentilesw() funkci. Pro percentily 50, 75 a 99,9 použijte následující dotaz:

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

Výstup

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Vrácení percentilů jako pole

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

Syntaxe

percentilesw_array(výraz weightExpr, percentils, )

Parametry

Název Type Pož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.
weightExpr long ✔️ Váha, která má dát každou hodnotu.

Návraty

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

Příklady

Percentily oddělené čárkami

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)

Výstup

percentile_LatencyBucket
[20, 20, 40]

Dynamické pole percentilů

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

Výstup

percentile_LatencyBucket
[20, 20, 40]