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

quantileGK

quantileGK

도입된 버전: v23.4

Greenwald-Khanna 알고리즘을 사용하여 수치 데이터 시퀀스의 quantile을 계산합니다.

Greenwald-Khanna 알고리즘은 데이터 스트림에서 분위수를 매우 효율적으로 계산하는 알고리즘입니다. 이 알고리즘은 2001년에 Michael Greenwald와 Sanjeev Khanna에 의해 제안되었습니다. 대규모 데이터 스트림에서 실시간으로 정확한 분위수를 계산해야 하는 데이터베이스 및 빅데이터 시스템에서 널리 사용됩니다. 이 알고리즘은 매우 효율적이며, 항목당 O(log n) 공간과 O(log log n) 시간만 사용합니다(n은 입력 데이터의 크기). 또한 매우 정확하여, 높은 확률로 근사적인 분위수 값을 제공합니다.

quantileGK는 근사 분위수 결과의 정확도를 사용자가 제어할 수 있다는 점에서 ClickHouse의 다른 분위수 함수와 다릅니다.

Syntax

quantileGK(accuracy, level)(expr)

별칭(Aliases): medianGK

매개변수(Parameters)

  • accuracy — 분위수(quantile)의 정확도입니다. 양의 상수 정수입니다. 값이 클수록 오차가 작아집니다. 예를 들어 accuracy 인수를 100으로 설정하면, 계산된 분위수의 오차는 높은 확률로 1%를 넘지 않습니다. 계산된 분위수의 정확도와 알고리즘의 계산 복잡도 사이에는 상충 관계가 있습니다. accuracy 값이 클수록 분위수를 더 정확하게 계산할 수 있지만, 더 많은 메모리와 연산 자원이 필요합니다. 반대로 accuracy 인수가 작으면 정확도는 다소 낮아지지만, 더 빠르고 메모리 효율적인 계산이 가능합니다. UInt*
  • level — 선택 사항(Optional). 분위수의 수준(level)입니다. 0에서 1 사이의 상수 부동 소수점 숫자입니다. 기본값: 0.5. level=0.5일 때 함수는 중앙값(median)을 계산합니다. Float*

인수(Arguments)

  • expr — 숫자 데이터 타입, Date 또는 DateTime을 결과로 하는 컬럼 값에 대한 표현식입니다. (U)Int* 또는 Float* 또는 Decimal* 또는 Date 또는 DateTime

반환 값(Returned value)

지정된 수준과 정확도에 대한 분위수를 반환합니다. Float64 또는 Date 또는 DateTime

예시(Examples)

서로 다른 정확도 수준으로 분위수 계산하기

SELECT quantileGK(1, 0.25)(number + 1) FROM numbers(1000);
┌─quantileGK(1, 0.25)(plus(number, 1))─┐
│                                    1 │
└──────────────────────────────────────┘

더 높은 정확도의 분위수

SELECT quantileGK(100, 0.25)(number + 1) FROM numbers(1000);
┌─quantileGK(100, 0.25)(plus(number, 1))─┐
│                                    251 │
└────────────────────────────────────────┘

관련 항목