ARRAY_DISTINCT

ARRAY_DISTINCT

입력 ARRAY에서 고유한 요소만 담은 새 ARRAY를 반환하는 함수예요. 입력 ARRAY에 있는 중복 요소를 제외합니다.

출처: Snowflake SQL Reference

본문

이 함수는 ARRAY의 요소를 특정 순서로 반환한다고 보장하지 않아요. NULL-safe라서 중복 요소를 식별할 때 NULL을 알려진 값으로 취급해요.

ARRAY_DISTINCT( <array> )

<array> — 제거할 중복 요소가 있을 수 있는 배열이에요.

입력 배열의 요소에서 중복을 뺀 ARRAY를 반환해요. 예를 들어 입력 ARRAY에서 값 'x'가 여러 번 나오면 반환된 ARRAY에는 값이 'x'인 요소가 하나만 있어요. 입력 인자가 NULL이면 NULL을 반환해요. 반환된 배열 안의 값 순서는 지정되지 않아요.

사용 메모

  • OBJECT 타입 요소의 경우, 객체가 동일해야 중복으로 간주돼요.
  • 중복 요소를 식별할 때 NULL을 알려진 값으로 취급해요(즉 NULL은 NULL 외의 다른 값 X의 중복이 아님).

예시 — 중복 요소 A와 NULL을 제거:

SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);
+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [                                           |
|   "A",                                      |
|   "B",                                      |
|   undefined                                 |
| ]                                           |
+---------------------------------------------+

중복 OBJECT를 제거하는 예시예요. b 값이 3(다른 값)인 마지막 요소는 중복으로 간주되지 않아요.

SELECT ARRAY_DISTINCT( [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3} ] );
+----------------------------------------------------------------------------+
| ARRAY_DISTINCT( [ {'A': 1, 'B': 2}, {'A': 1, 'B': 2}, {'A': 1, 'B': 3} ] ) |
|----------------------------------------------------------------------------|
| [                                                                          |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 2                                                                 |
|   },                                                                       |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 3                                                                 |
|   }                                                                        |
| ]                                                                          |
+----------------------------------------------------------------------------+

더 알아보기 (Learn more)