Compartilhar via


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

Aplica-se a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

A percentile() função calcula uma estimativa para o percentil especificado de classificação mais próxima da população definida por 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.

Para calcular percentis ponderados, consulte percentilesw().

Observação

Essa função é usada em conjunto com o operador summarize.

Sintaxe

percentile(percentil expr, )

percentiles(percentis expr, )

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
expr string ✔️ A expressão a ser usada para o cálculo de agregação.
percentil int ou longo ✔️ Uma constante que especifica o percentil.
percentis int ou longo ✔️ Um ou mais percentis separados por vírgula.

Devoluções

Retorna uma tabela com as estimativas para expr dos percentis especificados no grupo, cada um em uma coluna separada.

Observação

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

Exemplos

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

Saída

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

Estado percentile_DamageProperty_95
ATLÂNTICO SUL 0
FLÓRIDA 40000
GEÓRGIA 143333
MISSISSIPI 80000
AMERICAN SAMOA 250.000
KENTUCKY 35.000
OHIO 150.000
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

Saída

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

Estado percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLÂNTICO SUL 0 0 0
FLÓRIDA 0 0 40000
GEÓRGIA 0 0 143333
MISSISSIPI 0 0 80000
AMERICAN SAMOA 0 0 250.000
KENTUCKY 0 0 35.000
OHIO 0 2000 150.000
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.

Sintaxe

percentiles_array(percentis expr, )

Parâmetros

Nome Digitar Obrigatória Descrição
expr string ✔️ A expressão a ser usada para o cálculo de agregação.
percentis int, long ou dinâmico ✔️ Um ou mais percentis separados por vírgula ou uma matriz dinâmica de percentis. Cada percentil pode ser um valor inteiro ou longo.

Devoluções

Retorna uma estimativa para expr dos percentis especificados no grupo como uma única coluna do tipo de matriz dinâmica.

Exemplos

Percentis separados por vírgula

Vários percentis podem ser obtidos como uma matriz em uma única coluna dinâmica, em vez de em várias colunas como com percentiles().

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

Saída

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

Saída

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

Percentil de classificação mais próxima

O P-ésimo percentil (0 <P<= 100) de uma lista de valores ordenados, classificados em ordem crescente, é o menor valor da lista. O percentual P dos dados é menor ou igual ao valor do percentil P (do artigo da Wikipedia sobre percentis).

Defina os percentis 0 para ser o menor membro da população.

Observação

Dada a natureza aproximada do cálculo, o valor real retornado pode não ser um membro da população. A definição de posto mais próximo significa que P = 50 não está em conformidade com a definição interpolativa da mediana. Ao avaliar a significância dessa discrepância para a aplicação específica, o tamanho da população e um erro de estimativa devem ser levados em consideração.

Erro de estimativa em percentuais

A agregação de percentis fornece um valor aproximado usando T-Digest.

Observação

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