に最終更新
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の対応するフィールドは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}] |
+-----------------------------------------------------------------------------------------------------------------------+