설명
Array 조합자는
uniq
함수에 적용할 수 있으며, uniqArray 집계 조합자 함수를 사용해 모든 배열에 걸친
고유 요소의 대략적인 개수를 계산합니다.
uniqArray 함수는 데이터셋의 여러 배열에 걸쳐
고유 요소 수를 계산해야 할 때 유용합니다. 이는 uniq(arrayJoin())를 사용하는 것과 동일하며,
이때 arrayJoin은 먼저 배열을 펼친 다음 uniq가 고유 요소를 계산합니다.
사용 예시
이 예시에서는 여러 카테고리에 걸친 사용자 관심사 샘플 데이터셋을 사용해
uniqArray의 작동 방식을 보여줍니다. 또한 고유 요소 수를 계산하는 방식의 차이를
보여주기 위해 uniq(arrayJoin())와 비교합니다.
CREATE TABLE user_interests
(
user_id UInt32,
interests Array(String)
) ENGINE = Memory;
INSERT INTO user_interests VALUES
(1, ['reading', 'gaming', 'music']),
(2, ['gaming', 'sports', 'music']),
(3, ['reading', 'cooking']);
SELECT
uniqArray(interests) AS unique_interests_total,
uniq(arrayJoin(interests)) AS unique_interests_arrayJoin
FROM user_interests;uniqArray 함수는 uniq(arrayJoin())와 마찬가지로, 모든 배열을 합쳐 고유한 요소의 개수를 계산합니다.
이 예시에서는:
uniqArray는 모든 사용자의 배열 전체에서 고유한 관심사가 5개이므로 5를 반환합니다: 'reading', 'gaming', 'music', 'sports', 'cooking'uniq(arrayJoin())도 5를 반환하며, 두 함수 모두 모든 배열을 합쳐 고유한 요소의 개수를 계산한다는 것을 보여줍니다
┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │ 5 │ 5 │
└────────────────────────┴────────────────────────────┘