카테고리:

반정형 및 정형 데이터 함수 (배열/오브젝트 만들기 및 조작)

ARRAYS_ZIP

각각 입력 배열의 n번째 요소에 대한 키-값 페어를 포함하는 오브젝트 로 구성된 배열 을 반환합니다. 예를 들어 반환된 배열에서 첫 번째 오브젝트는 입력 배열에서 각 첫 번째 요소의 키-값 페어를 포함하고, 두 번째 오브젝트는 입력 배열에서 각 두 번째 요소의 키-값 페어를 포함하는 식입니다.

구문

ARRAYS_ZIP( <array> [ , <array> ... ] )
Copy

인자

array

입력 배열.

입력 배열의 길이는 다양할 수 있습니다.

입력 배열 중 하나라도 정형 배열 인 경우 모든 입력 배열은 정형 배열이어야 합니다.

반환

다음 타입 중 하나의 값을 반환합니다.

  • 입력 배열이 반정형 배열인 경우 이 함수는 정형 오브젝트로 구성된 반정형 배열을 반환합니다.

  • 입력 배열이 정형 배열인 경우 이 함수는 정형 오브젝트로 구성된 정형 배열을 반환합니다. 정형 오브젝트의 정의는 입력 배열의 수와 배열에 있는 값의 유형에 따라 달라집니다.

  • 입력 배열 중 하나라도 NULL이면 이 함수는 NULL을 반환합니다.

각 오브젝트에는 입력 배열의 n번째 요소 값에 대한 키-값 페어가 포함됩니다. 키($1, $2 등)는 입력 배열의 위치를 나타냅니다.

예를 들어, 다음 배열을 전달한다고 가정하겠습니다.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  ['first', 'second', 'third'],
  ['i', 'ii', 'iii']
) AS zipped_arrays;
Copy

이 함수는 다음과 같은 오브젝트 배열을 반환합니다.

+---------------------+
| ZIPPED_ARRAYS       |
|---------------------|
| [                   |
|   {                 |
|     "$1": 1,        |
|     "$2": "first",  |
|     "$3": "i"       |
|   },                |
|   {                 |
|     "$1": 2,        |
|     "$2": "second", |
|     "$3": "ii"      |
|   },                |
|   {                 |
|     "$1": 3,        |
|     "$2": "third",  |
|     "$3": "iii"     |
|   }                 |
| ]                   |
+---------------------+

반환된 배열에서는 다음과 같습니다.

  • 첫 번째 오브젝트에는 모든 입력 배열의 첫 번째 요소가 포함됩니다.

  • 두 번째 오브젝트에는 모든 입력 배열의 두 번째 요소가 포함됩니다.

  • 세 번째 오브젝트에는 모든 입력 배열의 세 번째 요소가 포함됩니다.

오브젝트의 키는 입력 배열을 식별합니다.

  • $1 키-값 페어에는 첫 번째 입력 배열의 값이 포함됩니다.

  • $2 키-값 페어에는 두 번째 입력 배열의 값이 포함됩니다.

  • $3 키-값 페어에는 세 번째 입력 배열의 값이 포함됩니다.

사용법 노트

  • 반환된 배열의 길이는 가장 긴 입력 배열의 길이와 같습니다. 일부 입력 배열이 더 짧은 경우 이 함수는 더 짧은 배열에서 누락된 나머지 요소에 대해 JSON null 을 사용합니다.

  • 입력 배열에 NULL 요소가 포함된 경우 이 함수는 해당 요소에 대해 JSON null을 반환합니다.

다음 예에서는 함수의 작동 방식을 보여줍니다.

단일 입력 배열

다음 예에서는 단일 배열의 첫 번째, 두 번째, 세 번째 요소를 포함하는 오브젝트로 구성된 배열을 반환합니다.

SELECT ARRAYS_ZIP(
  [1, 2, 3]
) AS zipped_array;
Copy
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [            |
|   {          |
|     "$1": 1  |
|   },         |
|   {          |
|     "$1": 2  |
|   },         |
|   {          |
|     "$1": 3  |
|   }          |
| ]            |
+--------------+

다중 입력 배열

다음 예에서는 입력 배열의 첫 번째, 두 번째, 세 번째 요소를 포함하는 오브젝트로 구성된 배열을 반환합니다.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  [10, 20, 30],
  [100, 200, 300]
) AS zipped_array;
Copy
+---------------+
| ZIPPED_ARRAY  |
|---------------|
| [             |
|   {           |
|     "$1": 1,  |
|     "$2": 10, |
|     "$3": 100 |
|   },          |
|   {           |
|     "$1": 2,  |
|     "$2": 20, |
|     "$3": 200 |
|   },          |
|   {           |
|     "$1": 3,  |
|     "$2": 30, |
|     "$3": 300 |
|   }           |
| ]             |
+---------------+

다양한 길이의 입력 배열

다음 예에서는 다양한 길이의 입력 배열을 전달합니다. 더 짧은 배열에는 없는 값의 경우 이 함수는 오브젝트에서 JSON null을 사용합니다.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  ['one'],
  ['I', 'II']
) AS zipped_array;
Copy
+------------------+
| ZIPPED_ARRAY     |
|------------------|
| [                |
|   {              |
|     "$1": 1,     |
|     "$2": "one", |
|     "$3": "I"    |
|   },             |
|   {              |
|     "$1": 2,     |
|     "$2": null,  |
|     "$3": "II"   |
|   },             |
|   {              |
|     "$1": 3,     |
|     "$2": null,  |
|     "$3": null   |
|   }              |
| ]                |
+------------------+

NULL 및 빈 배열 처리

다음 예에서 보듯이, 모든 입력 배열에 대해 NULL을 전달할 경우 이 함수는 SQL NULL을 반환합니다.

SELECT ARRAYS_ZIP(
  [1, 2, 3],
  NULL,
  [100, 200, 300]
) AS zipped_array;
Copy
+--------------+
| ZIPPED_ARRAY |
|--------------|
| NULL         |
+--------------+

다음 예에서는 모든 입력 배열이 비어 있으므로 이 함수는 빈 오브젝트를 반환하게 됩니다.

SELECT ARRAYS_ZIP(
  [], [], []
) AS zipped_array;
Copy
+--------------+
| ZIPPED_ARRAY |
|--------------|
| [            |
|   {}         |
| ]            |
+--------------+

다음 예에서 입력 배열의 일부 요소는 NULL입니다. 반환된 오브젝트에서 이러한 요소의 값은 JSON null입니다.

SELECT ARRAYS_ZIP(
  [1, NULL, 3],
  [NULL, 20, NULL],
  [100, NULL, 300]
) AS zipped_array;
Copy
+-----------------+
| ZIPPED_ARRAY    |
|-----------------|
| [               |
|   {             |
|     "$1": 1,    |
|     "$2": null, |
|     "$3": 100   |
|   },            |
|   {             |
|     "$1": null, |
|     "$2": 20,   |
|     "$3": null  |
|   },            |
|   {             |
|     "$1": 3,    |
|     "$2": null, |
|     "$3": 300   |
|   }             |
| ]               |
+-----------------+