percentile(), percentiles() (fonction d’agrégation)

La percentile() fonction calcule une estimation pour le centile de rang le plus proche spécifié de la population définie par expr. La précision dépend de la densité de population dans la région du centile.

percentiles() fonctionne de la même façon que percentile(). Toutefois, percentiles() peut calculer plusieurs valeurs centiles à la fois, ce qui est plus efficace que le calcul de chaque valeur de centile séparément.

Pour calculer les centiles pondérés, consultez centilesw().

Notes

Cette fonction est utilisée conjointement avec l’opérateur summarize.

Syntax

percentile(Expr,Percentile)

percentiles(Expr,Percentiles)

Découvrez les conventions de syntaxe.

Paramètres

Nom Type Obligatoire Description
expr string ✔️ Expression à utiliser pour le calcul d’agrégation.
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 un centile unique

L’exemple suivant montre que la valeur est DamageProperty supérieure à 95 % du jeu d’échantillons et inférieure à 5 % du jeu d’échantillons.

StormEvents | summarize percentile(DamageProperty, 95) by State

Sortie

Le tableau des résultats affiché inclut uniquement les 10 premières lignes.

State percentile_DamageProperty_95
ATLANTIQUE SUD 0
FLORIDE 40000
GEORGIE 143333
MISSISSIPPI 80000
SAMOA AMÉRICAINES 250 000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

Calculer plusieurs centiles

L’exemple suivant montre la valeur de calculée simultanément à l’aide de DamageProperty 5, 50 (médiane) et 95.

StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State

Sortie

Le tableau des résultats affiché inclut uniquement les 10 premières lignes.

State percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLANTIQUE SUD 0 0 0
FLORIDE 0 0 40000
GEORGIE 0 0 143333
MISSISSIPPI 0 0 80000
SAMOA AMÉRICAINES 0 0 250 000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Retourner des centiles sous forme de tableau

Au lieu de retourner les valeurs dans des colonnes individuelles, utilisez la percentiles_array() fonction pour renvoyer les centiles dans une seule colonne de type tableau dynamique.

Syntax

percentiles_array(Expr,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.

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

Plusieurs centiles peuvent être obtenus sous la forme d’un tableau dans une seule colonne dynamique, plutôt que dans plusieurs colonnes comme avec les centiles().

TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName

Sortie

Le tableau des résultats affiche uniquement les 10 premières lignes.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Tableau dynamique de centiles

Les centiles pour percentiles_array peuvent être spécifiés dans un tableau dynamique de nombres entiers ou à virgule flottante. Le tableau doit être constant, mais il n’est pas obligatoire d’être littéral.

TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName

Sortie

Le tableau des résultats affiche uniquement les 10 premières lignes.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Centile de rang le plus proche

P-th centile (0 <P<= 100) d’une liste de valeurs triées dans l’ordre croissant est la plus petite valeur de la liste. Le pourcentage P des données est inférieur ou égal à la valeur P-th centile (de l’article wikipédia sur les centiles).

Définissez le 0-ième centile comme étant le plus petit membre de la population.

Notes

Étant donné la nature approximative du calcul, la valeur réelle retournée peut ne pas être un membre de la population. La définition de rang le plus proche signifie que P=50 n’est pas conforme à la définition interpolative de la médiane. Lors de l’évaluation de l’importance de cette différence pour l’application spécifique, la taille de la population et une erreur d’estimation doivent être pris en compte.

Erreur d’estimation dans les centiles

L’agrégation de centiles fournit une valeur approximative au moyen de T-Digest.

Notes

  • Les limites de l’erreur d’estimation dépendent de la valeur du centile demandé. La meilleure précision est aux deux extrémités de l’échelle [0..100]. Les centiles 0 et 100 sont les valeurs minimales et maximales exactes de la distribution. La précision diminue progressivement vers le milieu de l’échelle. C’est le pire à la médiane et est plafonné à 1%.
  • Les limites d’erreur sont observées sur le classement, et non sur la valeur. Supposons que percentile(X, 50) a retourné une valeur de Xm. L’estimation garantit qu’au moins 49 % et au maximum 51 % des valeurs de X sont inférieures ou égales à Xm. Il n’existe aucune limite théorique quant à la différence entre Xm et la valeur médiane réelle de X.
  • L’estimation peut parfois donner lieu à une valeur précise, mais il n’existe aucune condition fiable pour définir quand ce sera le cas.