メインコンテンツまでスキップ
に最終更新

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