uniqArray — 여러 배열의 고유 요소 개수 세기

uniqArray — 여러 배열의 고유 요소 개수 세기

uniqArrayuniq 함수에 Array 결합자를 적용해서 모든 배열에 걸친 고유 요소의 대략적 개수를 계산하는 방법을 보여드릴게요.

출처: 문서

본문

uniq 함수에 Array 결합자를 적용하면 모든 배열에 걸친 고유 요소의 대략적 개수를 계산하는데, 이때 uniqArray 집계 결합자 함수를 사용해요. uniqArray는 데이터셋 안 여러 배열에 걸쳐 고유 요소 개수를 세야 할 때 유용해요. uniq(arrayJoin())을 사용하는 것과 동일한데, 여기서 arrayJoin이 먼저 배열을 평평하게 만든 다음 uniq가 고유 요소를 세요.

이 예제에서는 서로 다른 카테고리의 사용자 관심사 샘플 데이터셋을 사용해서 uniqArray가 어떻게 동작하는지 보여드릴게요. 고유 요소 개수를 세는 차이를 보여주기 위해 uniq(arrayJoin())과 비교해볼게요.

Query

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를 반환해요. 두 함수 모두 모든 배열에 걸친 고유 요소를 세기 때문이에요

Response

   ┌─unique_interests_total─┬─unique_interests_arrayJoin─┐
1. │                      5 │                          5 │
   └────────────────────────┴────────────────────────────┘

더 알아보기 (Learn more)