メインコンテンツまでスキップ
バージョン: 26.x

ARRAY_ZIP

ファンクション

ARRAY_ZIP関数は、複数のARRAY(例:arr1, arr2, ... , arrN)を要素ごとに結合して、単一のARRAY<STRUCT>にします。各STRUCTには、各入力配列の対応する要素が含まれます。

Syntax

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の最初の要素が含まれます。
    • 2番目のSTRUCTには、各入力ARRAYの2番目の要素が含まれます。
    • 3番目のSTRUCTには、各入力ARRAYの3番目の要素が含まれます。
  1. 戻り値にアクセスする

    -- 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"} |
    +---------------------------------------------------------------+
  2. 配列のいずれかが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 |
    +------------------------------------------------------------------+
  3. 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}] |
    +-----------------------------------------------------------------------------------------------------------------------+