quantilesTiming
Introduzido em: v1.1.0
Calcula múltiplos quantis de uma sequência de dados numéricos em diferentes níveis simultaneamente, com precisão fixa.
Esta função é equivalente a quantileTiming, mas permite calcular vários níveis de quantil em uma única passagem, o que é mais eficiente do que chamar funções de quantil individualmente.
O resultado é determinístico (não depende da ordem de processamento da consulta). A função é otimizada para trabalhar com sequências que descrevem distribuições, como tempos de carregamento de páginas da web ou tempos de resposta do backend.
Precisão
O cálculo é preciso se:
- O número total de valores não exceder 5670.
- O número total de valores exceder 5670, mas o tempo de carregamento da página for menor que 1024 ms.
Caso contrário, o resultado do cálculo é arredondado para o múltiplo de 16 ms mais próximo.
Sintaxe
quantilesTiming(level1, level2, ...)(expr)Parâmetros
level— Níveis dos quantis. Um ou mais números de ponto flutuante constantes de 0 a 1. Recomendamos usar valores delevelno intervalo[0.01, 0.99].Float*
Argumentos
expr— Expressão sobre os valores da coluna que resulta em tipos de dados numéricos,DateouDateTime. Se valores negativos forem passados para a função, o comportamento será indefinido. Se o valor for maior que 30.000 (tempo de carregamento de página superior a 30 segundos), considera-se 30.000.(U)Int*ouFloat*ouDateouDateTime
Valor retornado
Array de quantis dos níveis especificados, na mesma ordem em que os níveis foram informados. Array(Float32)
Exemplos
Cálculo de vários quantis de tempo
CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);
SELECT quantilesTiming(0.25, 0.5, 0.75)(response_time) FROM t;┌─quantilesTiming(0.25, 0.5, 0.75)(response_time)─┐
│ [108,126,168] │
└─────────────────────────────────────────────────┘