percentil(), percentiles() (função de agregação)
A percentile()
função calcula uma estimativa para o percentil de classificação mais próxima especificado 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 ao mesmo tempo, o que é mais eficiente do que calcular cada valor de percentil separadamente.
Para calcular percentis ponderados, veja percentilesw().
Nota
Esta função é utilizada em conjunto com o operador summarize.
Syntax
percentile(
expr,
percentil)
percentiles(
expr,
percentis)
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
expr | string |
✔️ | A expressão a utilizar para cálculo de agregação. |
percentil | int ou long | ✔️ | Uma constante que especifica o percentil. |
percentis | int ou long | ✔️ | Um ou mais percentis separados por vírgulas. |
Devoluções
Devolve uma tabela com as estimativas para expr dos percentis especificados no grupo, cada um numa coluna separada.
Nota
Para devolver os percentis numa única coluna, veja Devolver percentis como uma matriz.
Exemplos
Calcular um único percentil
O exemplo seguinte mostra o valor de DamageProperty
ser maior do que 95% do conjunto de amostras e inferior a 5% do conjunto de exemplo.
StormEvents | summarize percentile(DamageProperty, 95) by State
Saída
A tabela de resultados apresentada inclui apenas as primeiras 10 linhas.
Estado | percentile_DamageProperty_95 |
---|---|
SUL DO ATLÂNTICO | 0 |
FLORIDA | 40000 |
GEÓRGIA | 143333 |
MISSISSIPPI | 80000 |
SAMOA AMERICANA | 250000 |
KENTUCKY | 35000 |
Lisboa | 150000 |
KANSAS | 51392 |
Viana do Castelo | 49167 |
ALABAMA | 50000 |
Calcular vários percentis
O exemplo seguinte mostra o valor de DamageProperty
calculado em simultâneo com 5, 50 (mediana) e 95.
StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State
Saída
A tabela de resultados apresentada inclui apenas as primeiras 10 linhas.
Estado | percentile_DamageProperty_5 | percentile_DamageProperty_50 | percentile_DamageProperty_95 |
---|---|---|---|
SUL DO ATLÂNTICO | 0 | 0 | 0 |
FLORIDA | 0 | 0 | 40000 |
GEÓRGIA | 0 | 0 | 143333 |
MISSISSIPPI | 0 | 0 | 80000 |
SAMOA AMERICANA | 0 | 0 | 250000 |
KENTUCKY | 0 | 0 | 35000 |
Lisboa | 0 | 2000 | 150000 |
KANSAS | 0 | 0 | 51392 |
Viana do Castelo | 0 | 0 | 49167 |
ALABAMA | 0 | 0 | 50000 |
... | ... |
Devolver percentis como uma matriz
Em vez de devolver os valores em colunas individuais, utilize a percentiles_array()
função para devolver os percentis numa única coluna do tipo de matriz dinâmica.
Syntax
percentiles_array(
expr,
percentis)
Parâmetros
Nome | Tipo | Necessário | Descrição |
---|---|---|---|
expr | string |
✔️ | A expressão a utilizar para cálculo de agregação. |
percentis | int, longo ou dinâmico | ✔️ | Um ou mais percentis separados por vírgulas ou uma matriz dinâmica de percentis. Cada percentil pode ser um número inteiro ou um valor longo. |
Devoluções
Devolve 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
Vários percentis podem ser obtidos como uma matriz numa única coluna dinâmica, em vez de em múltiplas colunas como com percentis().
TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName
Saída
A tabela de resultados apresenta 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 numa matriz dinâmica de números inteiros ou de vírgula flutuante. A matriz tem de ser constante, mas não tem de ser literal.
TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName
Saída
A tabela de resultados apresenta 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 percentil P-ésimo (0 <P<= 100) de uma lista de valores ordenados, ordenados por ordem ascendente, é o menor valor na lista. A percentagem P dos dados é menor ou igual ao valor de percentil P (do artigo da Wikipédia sobre percentis).
Defina 0 percentis para ser o membro mais pequeno da população.
Nota
Dada a natureza aproximada do cálculo, o valor devolvido real pode não ser membro da população. A definição de classificação mais próxima significa que P=50 não está em conformidade com a definição interpolativa da mediana. Ao avaliar a importância desta discrepância para a aplicação específica, deve ter em conta o tamanho da população e um erro de estimativa .
Erro de estimativa em percentis
A agregação de percentis fornece um valor aproximado através do T-Digest.
Nota
- Os limites no erro de estimativa variam com o valor do percentil pedido. A melhor precisão está em ambas as extremidades da escala [0..100]. Os percentis 0 e 100 são os valores mínimo e máximo exatos da distribuição. A precisão diminui gradualmente para o meio da escala. É o pior na mediana e está limitado a 1%.
- Os limites de erro são observados na classificação e não no valor. Suponha que percentil(X, 50) devolveu 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 existe um limite teórico na diferença entre Xm e o valor mediano real de X.
- Por vezes, a estimativa pode resultar num valor preciso, mas não existem condições fiáveis para definir quando será o caso.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários