본문으로 바로가기
본문으로 바로가기

quantileDeterministic

quantileDeterministic

도입 버전: v1.1

수치형 데이터 시퀀스의 근사 분위수를 계산합니다.

이 함수는 최대 8192 크기의 저수지(reservoir)를 사용하는 저수지 표본추출(reservoir sampling)과 결정론적(deterministic) 샘플링 알고리즘을 적용합니다. 결과는 결정론적입니다. 정확한 분위수를 얻으려면 quantileExact 함수를 사용합니다.

하나의 쿼리에서 서로 다른 레벨을 갖는 여러 quantile* 함수를 사용할 때 내부 상태는 결합되지 않습니다(즉, 쿼리가 최적으로 동작하지 않습니다). 이 경우 quantiles 함수를 사용합니다.

구문

quantileDeterministic(level)(expr, determinator)

별칭: medianDeterministic

매개변수

  • level — 선택 사항입니다. 분위 수준을 나타내며, 0에서 1 사이의 상수 부동 소수점 수입니다. [0.01, 0.99] 범위의 level 값을 사용할 것을 권장합니다. 기본값: 0.5. level=0.5일 때 함수는 중앙값을 계산합니다. Float*

인수

  • expr — 컬럼 값에 대한 식으로, 결과가 숫자 데이터 타입, Date 또는 DateTime이어야 합니다. (U)Int* 또는 Float* 또는 Decimal* 또는 Date 또는 DateTime
  • determinator — 리저버 샘플링 알고리즘에서 난수 생성기 대신 해시를 계산하는 데 사용되는 숫자로, 샘플링 결과를 결정론적으로 만들기 위한 값입니다. determinator로는 사용자 id나 이벤트 id처럼 결정론적인 양의 숫자라면 어떤 값이든 사용할 수 있습니다. 동일한 determinator 값이 너무 자주 나타나면 함수가 올바르게 동작하지 않습니다. (U)Int*

반환 값

지정된 수준의 근사 분위수를 반환합니다. 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 │
└───────────────────────────────┘

함께 보기