quantileDeterministic
도입 버전: v1.1.0
숫자 데이터 시퀀스의 근사 분위수를 계산합니다.
이 함수는 최대 8192 크기의 리저버를 사용하는 리저버 샘플링과 결정적 방식의 샘플링 알고리즘을 적용합니다.
결과는 결정적입니다.
정확한 분위수를 얻으려면 quantileExact 함수를 사용하십시오.
하나의 쿼리에서 서로 다른 수준의 여러 quantile* 함수를 사용하면 내부 상태가 결합되지 않습니다(즉, 쿼리가 원래보다 비효율적으로 동작합니다).
이 경우 quantiles 함수를 사용하십시오.
구문
quantileDeterministic(level)(expr, determinator)별칭: medianDeterministic
매개변수
level— 선택 사항입니다. 분위수 수준입니다. 0과 1 사이의 상수 부동소수점 수입니다.level값은[0.01, 0.99]범위에서 사용하는 것을 권장합니다. 기본값은 0.5입니다.level=0.5이면 함수는 중앙값을 계산합니다.Float*
인수
expr— 컬럼 값을 대상으로 하는 표현식으로, 결과는 숫자 데이터 타입,Date또는DateTime이어야 합니다.(U)Int*또는Int128또는UInt128또는Int256또는UInt256또는Float*또는Date또는DateTimedeterminator— reservoir 샘플링 알고리즘에서 난수 생성기 대신 해시를 사용하는 숫자이며, 이를 통해 샘플링 결과를 결정론적으로 만듭니다.determinator로는 사용자 ID나 이벤트 ID와 같이 결정론적인 임의의 양수를 사용할 수 있습니다. 동일한determinator값이 너무 자주 나타나면 함수가 올바르게 동작하지 않습니다.UInt*
반환 값
지정된 수준의 근사 분위수를 반환합니다. Float64 또는 Date 또는 DateTime
예시
결정론적 분위수 계산
CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);
SELECT quantileDeterministic(val, 1) FROM t;┌─quantileDeterministic(val, 1)─┐
│ 1.5 │
└───────────────────────────────┘관련 항목