uniq

uniq

인자 값의 서로 다른 개수(중복을 제외한 고유 값 수)를 근사 계산하는 집계 함수예요. 적응형 샘플링 알고리즘을 사용해서 정확도가 높고 CPU 효율이 매우 좋아요.

출처: 문서

본문

uniq은 인자의 서로 다른 값의 개수를 근사 계산해요. 이 함수는 적응형 샘플링(adaptive sampling) 알고리즘을 사용해요. 계산 상태를 위해 함수는 최대 65536개까지의 요소 해시 값 샘플을 사용해요. 이 알고리즘은 매우 정확하고 CPU에서 매우 효율적이에요. 쿼리에 여러 개의 uniq 함수가 있을 때, uniq을 사용하는 것은 다른 집계 함수를 사용하는 것과 거의 비슷한 속도로 동작해요.

구현 세부 사항

이 함수는 집계의 모든 인자에 대한 해시를 계산한 다음, 이를 계산에 사용해요. 적응형 샘플링 알고리즘을 사용하며, 계산 상태를 위해 최대 65536개 요소의 해시 값 샘플을 사용해요. 이 알고리즘은 매우 정확하고 CPU에서 매우 효율적이에요. 쿼리에 여러 개의 uniq 함수가 있을 때, uniq을 사용하는 것은 다른 집계 함수를 사용하는 것과 거의 비슷한 속도로 동작해요.

거의 모든 시나리오에서 다른 변형보다 이 함수를 사용할 것을 권장해요.

구문 (Syntax)

uniq(x[, ...])

인자 (Arguments)

반환 값 (Returned value)

서로 다른 값의 근사 개수를 나타내는 UInt64 타입 숫자. UInt64

예제 (Examples)

사용 예시

쿼리:

CREATE TABLE example_table (
    id UInt32,
    category String,
    value Float64
) ENGINE = Memory;

INSERT INTO example_table VALUES
(1, 'A', 10.5),
(2, 'B', 20.3),
(3, 'A', 15.7),
(4, 'C', 8.9),
(5, 'B', 12.1),
(6, 'A', 18.4);

SELECT uniq(category) as unique_categories
FROM example_table;

응답:

┌─unique_categories─┐
│                 3 │
└───────────────────┘

여러 인자 사용

쿼리:

SELECT uniq(category, value) as unique_combinations
FROM example_table;

응답:

┌─unique_combinations─┐
│                   6 │
└─────────────────────┘

더 알아보기 (Learn more)