percentilew(), percentilesw() (função de agregação)
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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] |