percentilew(), percentilesw() (fonction d’agrégation)
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
La percentilew()
fonction calcule une estimation pondérée pour le centile de rang le plus proche spécifié de la population définie par expr. percentilesw()
fonctionne de la même façon que percentilew()
. Toutefois, percentilesw()
vous pouvez calculer plusieurs valeurs de centile pondérées à la fois, ce qui est plus efficace que le calcul de chaque valeur de centile pondérée séparément.
Les centiles pondérés calculent les centiles dans un jeu de données en donnant à chaque valeur du jeu de données d’entrée un poids. Dans cette méthode, chaque valeur est considérée comme répétée plusieurs fois égale à son poids, qui est ensuite utilisé pour calculer le centile. En donnant plus d’importance à certaines valeurs, les centiles pondérés offrent un moyen de calculer les centiles de manière « pondérée ».
Pour calculer des centiles non pondérés, consultez centiles().
Syntaxe
percentilew(
centile expr,
weightExpr,
)
percentilesw(
centiles expr,
weightExpr,
)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
expr | string |
✔️ | Expression à utiliser pour le calcul d’agrégation. |
weightExpr | long |
✔️ | Poids à donner à chaque valeur. |
Percentile | int ou long | ✔️ | Constante qui spécifie le centile. |
Percentiles | int ou long | ✔️ | Un ou plusieurs centiles séparés par des virgules. |
Retours
Retourne une table avec les estimations pour l’expr des centiles spécifiés dans le groupe, chacune dans une colonne distincte.
Remarque
Pour retourner les centiles dans une seule colonne, consultez Les centiles de retour sous forme de tableau.
Exemples
Calcul des centiles pondérés
Supposons que vous mesurez de façon répétitive le temps (Durée) qu’il prend une action à effectuer. Au lieu d’enregistrer chaque valeur de la mesure, vous enregistrez chaque valeur de Durée, arrondie à 100 msec et combien de fois la valeur arrondie est apparue (BucketSize).
Permet summarize percentilesw(Duration, BucketSize, ...)
de calculer les centiles donnés de manière « pondérée ». Traitez chaque valeur de Durée comme si elle était répétée BucketSize fois dans l’entrée, sans avoir réellement besoin de matérialiser ces enregistrements.
L’exemple suivant montre des centiles pondérés.
Utilisation de l’ensemble de valeurs de latence suivant en millisecondes : { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }
.
Pour réduire la bande passante et le stockage, effectuez une pré-agrégation sur les compartiments suivants : { 10, 20, 30, 40, 50, 100 }
. Comptez le nombre d’événements dans chaque compartiment pour produire le tableau suivant :
let latencyTable = datatable (ReqCount:long, LatencyBucket:long)
[
8, 10,
6, 20,
3, 30,
1, 40
];
latencyTable
Le tableau affiche :
- Huit événements dans le compartiment 10 ms (correspondant au sous-ensemble
{ 1, 1, 2, 2, 2, 5, 7, 7 }
) - Six événements dans le compartiment 20 ms (correspondant au sous-ensemble
{ 12, 12, 15, 15, 15, 18 }
) - Trois événements dans le compartiment 30 ms (correspondant au sous-ensemble
{ 21, 22, 26 }
) - Un événement dans le compartiment 40 ms (correspondant au sous-ensemble
{ 35 }
)
À ce stade, les données d’origine ne sont plus disponibles. Seul le nombre d’événements dans chaque compartiment. Pour calculer des centiles à partir de ces données, utilisez la percentilesw()
fonction.
Pour les centiles 50, 75 et 99,9, utilisez la requête suivante :
let latencyTable = datatable (ReqCount:long, LatencyBucket:long)
[
8, 10,
6, 20,
3, 30,
1, 40
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)
Sortie
percentile_LatencyBucket_50 | percentile_LatencyBucket_75 | percentile_LatencyBucket_99_9 |
---|---|---|
20 | 20 | 40 |
Retourner des centiles sous forme de tableau
Au lieu de retourner les valeurs dans des colonnes individuelles, utilisez la percentilesw_array()
fonction pour renvoyer les centiles dans une seule colonne de type de tableau dynamique.
Syntaxe
percentilesw_array(
centiles expr,
weightExpr,
)
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
expr | string |
✔️ | Expression à utiliser pour le calcul d’agrégation. |
Percentiles | int, long ou dynamique | ✔️ | Un ou plusieurs centiles séparés par des virgules ou un tableau dynamique de centiles. Chaque centile peut être une valeur entière ou longue. |
weightExpr | long |
✔️ | Poids à donner à chaque valeur. |
Retours
Retourne une estimation de l’expr des centiles spécifiés dans le groupe sous la forme d’une seule colonne de type de tableau dynamique.
Exemples
Centiles séparés par des virgules
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)
Sortie
percentile_LatencyBucket |
---|
[20, 20, 40] |
Tableau dynamique de centiles
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]))
Sortie
percentile_LatencyBucket |
---|
[20, 20, 40] |