percentilew(), percentilesw() (função de agregação)
A percentilew()
função calcula uma estimativa ponderada para o percentil de classificação mais próximo especificado da população definida por expr. percentilesw()
funciona de forma semelhante a percentilew()
. No entanto, percentilesw()
pode calcular vários valores de percentil ponderados ao mesmo tempo, o que é mais eficiente do que calcular cada valor de percentil ponderado separadamente.
Percentis ponderados calculam percentis em um conjunto de dados dando um peso a cada valor no conjunto de dados de entrada. Nesse método, cada valor é considerado repetido várias vezes igual ao peso, que é então usado para calcular o percentil. Ao dar mais importância a determinados valores, os percentis ponderados fornecem uma maneira de calcular percentis de maneira "ponderada".
Para calcular percentis não ponderados, consulte percentils().
Observação
Essa função é usada em conjunto com o operador summarize.
Syntax
percentilew(
Expr,
weightExpr,
Percentil)
percentilesw(
Expr,
weightExpr,
percentils)
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
expr | string |
✔️ | A expressão a ser usada para cálculo de agregação. |
weightExpr | long |
✔️ | O peso a ser fornecido a cada valor. |
Percentil | int ou longo | ✔️ | Uma constante que especifica o percentil. |
percentils | int ou longo | ✔️ | Um ou mais percentis separados por vírgulas. |
Retornos
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 percentils como uma matriz.
Exemplos
Calcular percentis ponderados
Suponha que você meça repetidamente o tempo (Duração) que ele executa uma ação para concluir. Em vez de registrar cada valor da medida, você registra cada valor de Duração, arredondado para 100 msec e quantas vezes o valor arredondado apareceu (BucketSize).
Use summarize percentilesw(Duration, BucketSize, ...)
para calcular os percentis especificados de forma "ponderada". Trate cada valor de Duration como se fosse repetido bucketSize 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 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 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 com base nos 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 de matriz dinâmica.
Syntax
percentilesw_array(
Expr,
weightExpr,
percentils)
Parâmetros
Nome | Tipo | Obrigatório | Descrição |
---|---|---|---|
expr | string |
✔️ | A expressão a ser usada para cálculo de agregação. |
percentils | int, long ou dynamic | ✔️ | Um ou mais percentis separados por vírgulas ou uma matriz dinâmica de percentis. Cada percentil pode ser um valor inteiro ou longo. |
weightExpr | long |
✔️ | O peso a ser fornecido a cada valor. |
Retornos
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í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)
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] |
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de