최종 수정: 에
ARRAY_ZIP
기능
ARRAY_ZIP 함수는 여러 ARRAY(예: arr1, arr2, ... , arrN)를 요소별로 결합하여 하나의 ARRAY<STRUCT>로 만듭니다. 각 STRUCT에는 각 입력 배열에서 대응하는 요소가 포함됩니다.
구문
ARRAY_ZIP(arr1, arr2, ... , arrN)
매개변수
arr1, arr2, ..., arrN: N개의 입력 배열이며, 타입은ARRAY<T1>, ARRAY<T2>, ..., ARRAY<Tn>입니다.
반환 값
- 반환 타입은
ARRAY<STRUCT<col1 T1, col2 T2, ..., colN Tn>>이며, 각STRUCT는 입력 배열에서 같은 인덱스에 있는 요소들의 조합을 나타냅니다.
사용 시 참고 사항
- 배열의 길이가 서로 다르면 함수가
RUNTIME_ERROR로 실패합니다. - 서로 다른 타입의 입력 배열을 지원하며, 결과 구조체의 필드는 입력 배열의 타입과 일대일로 대응합니다.
- 여러 병렬 배열을 구조화된 형식으로 결합하여 처리나 분석을 더 쉽게 수행할 수 있습니다.
예제
-
여러 배열 결합
SELECT ARRAY_ZIP(ARRAY(23, 24, 25), ARRAY("John", "Jane", "Jim"), ARRAY(true, false, true));
+-------------------------------------------------------------------------------------------------------------------+
| ARRAY_ZIP(ARRAY(23, 24, 25), ARRAY("John", "Jane", "Jim"), ARRAY(true, false, true)) |
+-------------------------------------------------------------------------------------------------------------------+
| [{"col1":23, "col2":"John", "col3":1}, {"col1":24, "col2":"Jane", "col3":0}, {"col1":25, "col2":"Jim", "col3":1}] |
+-------------------------------------------------------------------------------------------------------------------+- 반환 값의 첫 번째
STRUCT에는 각 입력ARRAY의 첫 번째 요소가 포함됩니다. - 두 번째
STRUCT에는 각 입력ARRAY의 두 번째 요소가 포함됩니다. - 세 번째
STRUCT에는 각 입력ARRAY의 세 번째 요소가 포함됩니다.
- 반환 값의 첫 번째
-
반환 값에 접근
-- Access the returned ARRAY
SELECT ARRAY_ZIP(ARRAY(23, 24, 25), ARRAY("John", "Jane", "Jim"))[1];
+---------------------------------------------------------------+
| ARRAY_ZIP(ARRAY(23, 24, 25), ARRAY("John", "Jane", "Jim"))[1] |
+---------------------------------------------------------------+
| {"col1":23, "col2":"John"} |
+---------------------------------------------------------------+ -
배열 중 하나가
NULL이면NULL반환SELECT ARRAY_ZIP(ARRAY(23, 24, 25), ARRAY("John", "Jane", "Jim"), NULL) ;
+------------------------------------------------------------------+
| ARRAY_ZIP(ARRAY(23, 24, 25), ARRAY("John", "Jane", "Jim"), NULL) |
+------------------------------------------------------------------+
| NULL |
+------------------------------------------------------------------+ -
ARRAY의 요소가NULL이면STRUCT의 해당 필드도NULLSELECT ARRAY_ZIP(ARRAY(23, NULL, 25), ARRAY("John", "Jane", NULL), ARRAY(NULL, false, true));
+-----------------------------------------------------------------------------------------------------------------------+
| ARRAY_ZIP(ARRAY(23, NULL, 25), ARRAY("John", "Jane", NULL), ARRAY(NULL, false, true)) |
+-----------------------------------------------------------------------------------------------------------------------+
| [{"col1":23, "col2":"John", "col3":null}, {"col1":null, "col2":"Jane", "col3":0}, {"col1":25, "col2":null, "col3":1}] |
+-----------------------------------------------------------------------------------------------------------------------+