본문으로 건너뛰기
최종 수정: 에

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는 입력 배열에서 같은 인덱스에 있는 요소들의 조합을 나타냅니다.

사용 시 참고 사항​

  1. 배열의 길이가 서로 다르면 함수가 RUNTIME_ERROR로 실패합니다.
  2. 서로 다른 타입의 입력 배열을 지원하며, 결과 구조체의 필드는 입력 배열의 타입과 일대일로 대응합니다.
  3. 여러 병렬 배열을 구조화된 형식으로 결합하여 처리나 분석을 더 쉽게 수행할 수 있습니다.

예제​

  1. 여러 배열 결합

    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의 세 번째 요소가 포함됩니다.
  2. 반환 값에 접근

    -- 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"} |
    +---------------------------------------------------------------+
  3. 배열 중 하나가 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 |
    +------------------------------------------------------------------+
  4. ARRAY의 요소가 NULL이면 STRUCT의 해당 필드도 NULL

     SELECT 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}] |
    +-----------------------------------------------------------------------------------------------------------------------+