percentil(), percentilsw() (agregační funkce)
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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().
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] |