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

quantileTiming

quantileTiming

도입 버전: v1.1

지정된 정밀도로 수치 데이터 시퀀스의 quantile을 계산합니다.

결과는 결정적이며(쿼리 처리 순서에 의존하지 않습니다). 이 함수는 웹 페이지 로딩 시간이나 백엔드 응답 시간과 같은 분포를 나타내는 시퀀스에 최적화되어 있습니다.

쿼리에서 서로 다른 레벨을 가진 여러 quantile* 함수를 사용할 때, 각 함수의 내부 상태는 결합되지 않습니다(즉, 쿼리가 가능한 것보다 덜 효율적으로 동작합니다). 이 경우 quantiles 함수를 사용하십시오.

정확도

다음 조건을 만족하면 계산은 정확합니다.

  • 값의 총 개수가 5670개를 넘지 않는 경우
  • 값의 총 개수가 5670개를 넘더라도 페이지 로딩 시간이 1024ms 미만인 경우

그 외의 경우, 계산 결과는 16ms의 배수 중 가장 가까운 값으로 반올림됩니다.

참고

페이지 로딩 시간의 quantile을 계산할 때, 이 함수는 quantile보다 더 효율적이고 정확합니다.

참고

함수에 전달된 값이 없는 경우(quantileTimingIf 사용 시), NaN이 반환됩니다. 이는 이러한 경우를 결과가 0이 되는 경우와 구분하기 위한 목적입니다. NaN 값의 정렬에 대한 참고 사항은 ORDER BY 절을 참조하십시오.

구문

quantileTiming(level)(expr)

별칭: medianTiming

매개변수

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

인수

  • expr — 컬럼 값에 대한 표현식으로, Float* 타입의 숫자를 반환합니다. 음수 값이 함수에 전달되면 동작은 정의되지 않습니다. 값이 30,000보다 크면(페이지 로딩 시간이 30초를 초과하는 경우) 30,000으로 간주합니다. Float*

반환 값

지정된 레벨에 대한 분위수입니다. 함수에 어떤 값도 전달되지 않은 경우(quantileTimingIf 사용 시) NaN이 반환됩니다. 이는 결과가 0이 되는 경우와 구분하기 위한 것입니다. Float32

예시

타이밍 분위수 계산

CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);

SELECT quantileTiming(response_time) FROM t;
┌─quantileTiming(response_time)─┐
│                           126 │
└───────────────────────────────┘

함께 보기