Compartilhar via


percentile(), percentiles() (função de agregação)

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

The percentile() function calculates an estimate for the specified nearest-rank percentile of the population defined by expr. A precisão depende da densidade da população na região do percentil.

percentiles() funciona de forma semelhante a percentile(). No entanto, percentiles() pode calcular vários valores de percentil de uma só vez, o que é mais eficiente do que calcular cada valor de percentil separadamente.

To calculate weighted percentiles, see percentilesw().

Note

This function is used in conjunction with the summarize operator.

Syntax

percentile( expr,percentile)

percentiles( expr,percentiles)

Learn more about syntax conventions.

Parameters

Name Tipo Required Description
expr string ✔️ A expressão a ser usada para o cálculo de agregação.
percentile real ✔️ Uma constante que especifica o percentil.
percentiles real ✔️ Um ou mais percentis separados por vírgula.

Returns

Returns a table with the estimates for expr of the specified percentiles in the group, each in a separate column.

Note

Para retornar os percentis em uma única coluna, consulte Retornar percentis como uma matriz.

Examples

Os exemplos nesta seção mostram como usar a sintaxe para ajudá-lo a começar.

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Talvez seja necessário modificar o nome da tabela na consulta de exemplo para corresponder à tabela em seu workspace.

Calcular percentil único

O exemplo a seguir mostra o valor de DamageProperty ser maior que 95% do conjunto de amostras e menor que 5% do conjunto de amostras.

StormEvents | summarize percentile(DamageProperty, 95) by State

Output

A tabela de resultados mostrada inclui apenas as primeiras 10 linhas.

State percentile_DamageProperty_95
ATLANTIC SOUTH 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
AMERICAN SAMOA 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

Calcular vários percentis

O exemplo a seguir mostra o valor de DamageProperty calculado simultaneamente usando 5, 50 (mediana) e 95.

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

Output

A tabela de resultados mostrada inclui apenas as primeiras 10 linhas.

State percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLANTIC SOUTH 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
AMERICAN SAMOA 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Retornar percentis como uma matriz

Em vez de retornar os valores em colunas individuais, use a percentiles_array() função para retornar os percentis em uma única coluna do tipo matriz dinâmica.

Syntax

percentiles_array( expr,percentiles)

Parameters

Name Tipo Required Description
expr string ✔️ A expressão a ser usada para o cálculo de agregação.
percentiles real ou dinâmico ✔️ Um ou mais percentis separados por vírgula ou uma matriz dinâmica de percentis. Cada percentil deve ser um valor real.

Returns

Returns an estimate for expr of the specified percentiles in the group as a single column of dynamic array type.

Examples

Comma-separated percentiles

Multiple percentiles can be obtained as an array in a single dynamic column, instead of in multiple columns as with percentiles().

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

Output

A tabela de resultados exibe apenas as primeiras 10 linhas.

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
... ... ...

Matriz dinâmica de percentis

Os percentis para percentiles_array podem ser especificados em uma matriz dinâmica de números inteiros ou de ponto flutuante. A matriz deve ser constante, mas não precisa ser literal.

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

Output

A tabela de resultados exibe apenas as primeiras 10 linhas.

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
... ... ...

Nearest-rank percentile

P-th percentile (0 <P<= 100) of a list of ordered values, sorted in ascending order, is the smallest value in the list. The P percent of the data is less or equal to P-th percentile value (from Wikipedia article on percentiles).

Define 0-th percentiles to be the smallest member of the population.

Note

Dada a natureza aproximada do cálculo, o valor real retornado pode não ser um membro da população. Nearest-rank definition means that P=50 does not conform to the interpolative definition of the median. When evaluating the significance of this discrepancy for the specific application, the size of the population and an estimation error should be taken into account.

Erro de estimativa em percentuais

The percentiles aggregate provides an approximate value using T-Digest.

Note

  • Os limites no erro de estimativa variam de acordo percentil solicitado. A melhor precisão está em ambas as extremidades da escala [0..100]. Os percentis 0 e 100 são os valores mínimos e máximos exatos da distribuição. A precisão diminui gradativamente rumo à parte central da escala. É pior na mediana e é limitado a 1%.
  • Os limites de erro são observados na classificação, não no valor. Suponha que o percentil (X, 50) retornou um valor de Xm. A estimativa garante que pelo menos 49% e no máximo 51% dos valores de X são menores ou iguais a Xm. Não há limite teórico para a diferença entre Xm e o valor mediano real de X.
  • A estimativa às vezes pode resultar em um valor preciso, mas não há condições confiáveis para definir quando será o caso.