percentilew(), percentilesw() (fonction d’agrégation)
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()
peut calculer plusieurs valeurs centiles 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 une pondération à chaque valeur du jeu de données d’entrée. Dans cette méthode, chaque valeur est considérée comme répétée un nombre de fois égal à son poids, qui est ensuite utilisé pour calculer le centile. En accordant plus d’importance à certaines valeurs, les centiles pondérés permettent de calculer les centiles de manière « pondérée ».
Pour calculer les centiles non pondérés, consultez percentiles().
Notes
Cette fonction est utilisée conjointement avec l’opérateur summarize.
Syntax
percentilew(
Expr,
weightExpr,
Percentile)
percentilesw(
Expr,
weightExpr,
Percentiles)
Découvrez les conventions de syntaxe.
Paramètres
Nom | Type | Obligatoire | Description |
---|---|---|---|
expr | string |
✔️ | Expression à utiliser pour le calcul d’agrégation. |
weightExpr | long |
✔️ | Poids à attribuer à 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 expr des centiles spécifiés dans le groupe, chacun dans une colonne distincte.
Notes
Pour retourner les centiles dans une seule colonne, consultez Retourner des centiles sous forme de tableau.
Exemples
Calculer les centiles pondérés
Supposons que vous mesurez de façon répétitive le temps (durée) nécessaire à l’exécution d’une action. Au lieu d’enregistrer chaque valeur de la mesure, vous enregistrez chaque valeur de Durée, arrondie à 100 msec, et le nombre de fois où la valeur arrondie est apparue (BucketSize).
Utilisez summarize percentilesw(Duration, BucketSize, ...)
pour calculer les centiles donnés de manière « pondérée ». Traitez chaque valeur de Duration comme si elle était répétée bucketSize dans l’entrée, sans avoir réellement besoin de matérialiser ces enregistrements.
L’exemple suivant montre des centiles pondérés.
En utilisant l’ensemble suivant de valeurs de latence 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 vers 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 de 10 ms (correspondant à un sous-ensemble
{ 1, 1, 2, 2, 2, 5, 7, 7 }
) - Six événements dans le compartiment de 20 ms (correspondant au sous-ensemble
{ 12, 12, 15, 15, 15, 18 }
) - Trois événements dans le compartiment de 30 ms (correspondant au sous-ensemble
{ 21, 22, 26 }
) - Un événement dans le compartiment de 40 ms (correspondant à un sous-ensemble
{ 35 }
)
À ce stade, les données d’origine ne sont plus disponibles. Uniquement 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 tableau dynamique.
Syntax
percentilesw_array(
Expr,
weightExpr,
Percentiles)
Paramètres
Nom | Type | Obligatoire | 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 un entier ou une valeur longue. |
weightExpr | long |
✔️ | Poids à attribuer à chaque valeur. |
Retours
Retourne une estimation pour expr des centiles spécifiés dans le groupe sous la forme d’une seule colonne de type 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] |
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour