Partilhar via


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

Aplica-se a: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A função percentilew() calcula uma estimativa ponderada para o percentil especificado mais próximo 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 atribuindo um peso a cada valor no conjunto de dados de entrada. 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 forma "ponderada".

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

Observação

Esta função é usada em conjunto com o operador resumo.

Sintaxe

percentilew( expr,weightExpr,percentil)

percentilesw( expr,weightExpr,percentis)

Saiba mais sobre convenções de sintaxe.

Parâmetros

Designação Tipo Necessário Descrição
expr string ✔️ A expressão a ser usada para o cálculo de agregação.
weightExpr long ✔️ O peso para dar a cada valor.
percentil real ✔️ Uma constante que especifica o percentil.
percentis real ✔️ Um ou mais percentis separados por vírgula.

Devoluções

Retorna uma tabela com as estimativas para de expiração 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

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

Calcular percentis ponderados

Suponha que você meça repetidamente o tempo (Duração) que uma ação leva para ser concluída. Em vez de registrar cada valor da medição, você registra cada valor de Duração, arredondado para 100 mseg, e quantas vezes o valor arredondado apareceu (BucketSize).

Use summarize percentilesw(Duration, BucketSize, ...) para calcular os percentis dados de forma "ponderada". Trate cada valor de Duration como se fosse repetido vezes BucketSize 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 para os seguintes buckets: { 10, 20, 30, 40, 50, 100 }. Conte o número de eventos em cada bucket para produzir a tabela a seguir:

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

A tabela apresenta:

  • 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 momento, os dados originais já não estão disponíveis. Apenas o número de eventos em cada bucket. Para calcular percentis a partir desses dados, use a função percentilesw(). 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)

Output

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Percentis de retorno como uma matriz

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

Sintaxe

percentilesw_array( expr,weightExpr,percentis)

Parâmetros

Designação Tipo Necessário Descrição
expr string ✔️ A expressão a ser usada para o cálculo de agregação.
percentis real ou dinâmico ✔️ Um ou mais percentis separados por vírgulas ou uma matriz dinâmica de percentis. Cada percentil deve ser um valor real.
weightExpr long ✔️ O peso para dar 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

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

Percentis separados por vírgulas

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)

Output

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

Output

percentile_LatencyBucket
[20, 20, 40]