- Categorias:
Funções de dados semiestruturados e estruturados (Matriz/objeto)
ARRAY_FLATTEN¶
Nivela um ARRAY de ARRAYs em um único ARRAY. A função concatena efetivamente os ARRAYs que são elementos do ARRAY de entrada e os retorna como um único ARRAY.
Sintaxe¶
ARRAY_FLATTEN( <array> )
Argumentos¶
array
O ARRAY de ARRAYs a ser nivelado.
Se algum elemento de
array
não for ARRAY, a função reportará um erro.
Retornos¶
Esta função retorna um ARRAY que é construído concatenando ARRAYs em array
.
Se array
for NULL ou contiver quaisquer elementos que sejam NULL, a função retornará NULL.
Notas de uso¶
Se
array
contiver vários níveis de ARRAYs aninhados, a função removerá apenas um nível de aninhamento.Por exemplo, se o ARRAY de entrada for:
[ [ [1, 2], [3] ], [ [4], [5] ] ]
A função retorna:
[ [1, 2], [3], [4], [5] ]
Exemplos¶
O exemplo a seguir nivela um ARRAY de ARRAYs. Cada elemento no ARRAY de entrada é um ARRAY de números. O exemplo nivela o ARRAY de entrada em um ARRAY contendo os números como elementos.
SELECT ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]);
+-----------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]) |
|-----------------------------------------|
| [ |
| 1, |
| 2, |
| 3, |
| 4, |
| 5, |
| 6 |
| ] |
+-----------------------------------------+
O exemplo a seguir nivela um ARRAY que contém ARRAYs contendo ARRAYs. A função remove o primeiro nível de aninhamento.
SELECT ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]);
+--------------------------------------------+
| ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]) |
|--------------------------------------------|
| [ |
| [ |
| 1, |
| 2 |
| ], |
| [ |
| 3 |
| ], |
| [ |
| 4 |
| ], |
| [ |
| 5 |
| ] |
| ] |
+--------------------------------------------+
O exemplo a seguir demonstra que a função retorna um erro quando um elemento do ARRAY de entrada não é ARRAY.
SELECT ARRAY_FLATTEN([[1, 2, 3], 4, [5, 6]]);
100107 (22000): Not an array: 'Input argument to ARRAY_FLATTEN is not an array of arrays'
O exemplo a seguir demonstra que a função retorna NULL quando um elemento do ARRAY de entrada for NULL.
SELECT ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]);
+------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]) |
|------------------------------------------|
| NULL |
+------------------------------------------+
O exemplo a seguir demonstra que a função nivela um ARRAY quando um elemento do ARRAY de entrada for um ARRAY que contém um elemento NULL.
SELECT ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]);
+--------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]) |
|--------------------------------------------|
| [ |
| 1, |
| 2, |
| 3, |
| undefined, |
| 5, |
| 6 |
| ] |
+--------------------------------------------+