Compartilhar via


percentilew(), percentilesw() (função de agregação)

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

A percentilew() função calcula uma estimativa ponderada para o percentil especificado de classificação mais próxima da população definida por expr. percentilesw() funciona de forma semelhante a percentilew(). No entanto, percentilesw() pode calcular vários valores de percentil ponderado de uma só vez, o que é mais eficiente do que calcular cada valor de percentil ponderado separadamente.

Os percentis ponderados calculam percentis em um conjunto de dados dando a cada valor no conjunto de dados de entrada um peso. Neste método, considera-se que cada valor é repetido um número de vezes igual ao seu peso, que é então utilizado para calcular o percentil. Ao dar mais importância a certos valores, os percentis ponderados fornecem uma maneira de calcular percentis de maneira "ponderada".

Para calcular percentis não ponderados, consulte percentis().

Observação

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

Sintaxe

percentilew(expr, weightExpr, percentil)

percentilesw(expr, weightPercentis 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.
pesoExpr long ✔️ O peso a ser dado a cada valor.
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 percentis ponderados

Suponha que você meça repetidamente o tempo (Duração) para que uma ação seja concluída. Em vez de registrar todos os valores da medida, você registra cada valor de Duração, arredondado para 100 ms, e quantas vezes o valor arredondado apareceu (BucketSize).

Use summarize percentilesw(Duration, BucketSize, ...) para calcular os percentis fornecidos de forma "ponderada". Trate cada valor de Duration como se fosse BucketSize repetido vezes na entrada, sem realmente precisar materializar esses registros.

O exemplo a seguir mostra percentis ponderados. Usando o seguinte conjunto de valores de latência em milissegundos: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Para reduzir a largura de banda e o armazenamento, faça a pré-agregação aos seguintes buckets: { 10, 20, 30, 40, 50, 100 }. Conte o número de eventos em cada bucket para produzir a seguinte tabela:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

A tabela exibe:

  • Oito eventos no bucket de 10 ms (correspondente ao subconjunto { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Seis eventos no bucket de 20 ms (correspondente ao subconjunto { 12, 12, 15, 15, 15, 18 })
  • Três eventos no bucket de 30 ms (correspondente ao subconjunto { 21, 22, 26 })
  • Um evento no bucket de 40 ms (correspondente ao subconjunto { 35 })

Neste ponto, os dados originais não estão mais disponíveis. Apenas o número de eventos em cada bucket. Para calcular percentis desses dados, use a percentilesw() função. Para os percentis 50, 75 e 99,9, use a seguinte consulta:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

Saída

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Retornar percentis como uma matriz

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

Sintaxe

percentilesw_array(expr, weightPercentis 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.
pesoExpr long ✔️ O peso a ser dado a cada valor.

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

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)

Saída

percentile_LatencyBucket
[20, 20, 40]

Matriz dinâmica de percentis

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]))

Saída

percentile_LatencyBucket
[20, 20, 40]