カテゴリ:

半構造化データ関数と構造化データ関数 (配列/オブジェクト)

ARRAY_FLATTEN

ARRAYs の ARRAY を単一の ARRAY にフラット化します。この関数は、入力 ARRAY の要素である ARRAYs を効果的に連結し、1つの ARRAY として返します。

構文

ARRAY_FLATTEN( <array> )
Copy

引数

array

フラット化する ARRAYs の ARRAY。

array のいずれかの要素が ARRAY でない場合、この関数はエラーを報告します。

戻り値

この関数は、 ARRAYs を array で連結した ARRAY を返します。

array が NULL であるか、または NULL である要素を含む場合、関数は NULL を返します。

使用上の注意

  • array が入れ子になった ARRAYs の複数のレベルを含んでいる場合、この関数は入れ子の1レベルのみを削除します。

    例えば、入力 ARRAY が次の場合:

    [ [ [1, 2], [3] ], [ [4], [5] ] ]
    

    関数は次を返します:

    [ [1, 2], [3], [4], [5] ]
    
    Copy

次の例は、ARRAYs の ARRAY をフラット化します。入力 ARRAY の各要素は、数値の ARRAY です。この例では、入力 ARRAY を、数値を要素として含む ARRAY にフラット化しています。

SELECT ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]);
Copy
+-----------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]) |
|-----------------------------------------|
| [                                       |
|   1,                                    |
|   2,                                    |
|   3,                                    |
|   4,                                    |
|   5,                                    |
|   6                                     |
| ]                                       |
+-----------------------------------------+

次の例は、ARRAYs を含む ARRAYs が含まれる ARRAY をフラット化しています。この関数は,最初のレベルの入れ子を削除します.

SELECT ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]);
Copy
+--------------------------------------------+
| ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]) |
|--------------------------------------------|
| [                                          |
|   [                                        |
|     1,                                     |
|     2                                      |
|   ],                                       |
|   [                                        |
|     3                                      |
|   ],                                       |
|   [                                        |
|     4                                      |
|   ],                                       |
|   [                                        |
|     5                                      |
|   ]                                        |
| ]                                          |
+--------------------------------------------+

次の例は、入力 ARRAY の要素が ARRAY でない場合に、関数がエラーを返すことを示しています。

SELECT ARRAY_FLATTEN([[1, 2, 3], 4, [5, 6]]);
Copy
100107 (22000): Not an array: 'Input argument to ARRAY_FLATTEN is not an array of arrays'

次の例は、入力 ARRAY の要素が NULL の場合に、関数が NULL を返すことを示しています。

SELECT ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]);
Copy
+------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]) |
|------------------------------------------|
| NULL                                     |
+------------------------------------------+

次の例は、入力 ARRAY の要素が NULL 要素を含む ARRAY である場合に、関数が ARRAY をフラット化することを示しています。

SELECT ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]);
Copy
+--------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]) |
|--------------------------------------------|
| [                                          |
|   1,                                       |
|   2,                                       |
|   3,                                       |
|   undefined,                               |
|   5,                                       |
|   6                                        |
| ]                                          |
+--------------------------------------------+