Partager via


percentilew(), percentilesw() (fonction d’agrégation)

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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().

Remarque

Cette fonction est utilisée conjointement avec l’opérateur de synthèse.

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]