quantilesTiming
도입 버전: v1.1.0
정해진 정밀도로 서로 다른 수준에서 숫자 데이터 시퀀스의 여러 분위수를 동시에 계산합니다.
이 함수는 quantileTiming과 동일하지만, 한 번에 여러 분위수 수준을 계산할 수 있으므로 각 분위수 함수를 개별적으로 호출하는 것보다 더 효율적입니다.
결과는 결정적이며(쿼리 처리 순서의 영향을 받지 않습니다), 이 함수는 웹 페이지 로딩 시간이나 백엔드 응답 시간과 같은 분포를 나타내는 시퀀스를 처리하도록 최적화되어 있습니다.
정확도
다음 경우에는 계산 결과가 정확합니다.
- 전체 값의 수가 5670개를 초과하지 않습니다.
- 전체 값의 수가 5670개를 초과하더라도 페이지 로딩 시간이 1024ms 미만입니다.
그렇지 않으면 계산 결과는 가장 가까운 16ms 배수로 반올림됩니다.
구문
quantilesTiming(level1, level2, ...)(expr)매개변수
level— 분위수 수준입니다. 0부터 1 사이의 하나 이상의 상수 부동소수점 수입니다.level값은[0.01, 0.99]범위에서 사용하는 것을 권장합니다.Float*
인수
expr— 컬럼 값에 대해 계산한 결과가 숫자 데이터 타입,Date또는DateTime이 되는 표현식입니다. 함수에 음수 값이 전달되면 동작은 정의되지 않습니다. 값이 30,000보다 크면(페이지 로딩 시간이 30초를 초과하면) 30,000으로 간주됩니다.(U)Int*orFloat*orDateorDateTime
반환 값
지정한 수준의 분위수 배열이며, 순서는 수준을 지정한 순서와 같습니다. Array(Float32)
예시
여러 타이밍 분위수 계산
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] │
└─────────────────────────────────────────────────┘