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 │
└─────────────────────┘