UNNEST (Lakehouse v1)
Desagrega a matriz e devolve o conjunto de elementos.
Sintaxe do Analyze
Seção intitulada “Sintaxe do Analyze”func.unnest( <array> )Exemplos do Analyze
Seção intitulada “Exemplos do Analyze”func.unnest([1, 2])
┌──────────────────────┐│ func.unnest([1, 2]) │├──────────────────────┤│ 1 ││ 2 │└──────────────────────┘Sintaxe SQL
Seção intitulada “Sintaxe SQL”UNNEST( <array> )Exemplos SQL
Seção intitulada “Exemplos SQL”SELECT UNNEST([1, 2]);
┌─────────────────┐│ unnest([1, 2]) │├─────────────────┤│ 1 ││ 2 │└─────────────────┘
-- UNNEST(array) can be used as a table function.SELECT * FROM UNNEST([1, 2]);
┌─────────────────┐│ value │├─────────────────┤│ 1 ││ 2 │└─────────────────┘Um exemplo prático
Seção intitulada “Um exemplo prático”Nos exemplos abaixo, utilizamos a seguinte tabela, chamada contacts, com a coluna phones definida como uma matriz de texto.
CREATE TABLE contacts ( id SERIAL PRIMARY KEY, name VARCHAR (100), phones TEXT []);A coluna phones é uma matriz unidimensional que contém os vários números de telefone que um contacto pode ter.
Para definir uma matriz multidimensional, acrescente os parênteses retos.
Por exemplo, pode definir uma matriz bidimensional da seguinte forma:
column_name data_type [][]Um exemplo de inserção de dados nessa tabela
INSERT INTO contacts (name, phones)VALUES('John Doe',ARRAY [ '(408)-589-5846','(408)-589-5555' ]);ou
INSERT INTO contacts (name, phones)VALUES('Lily Bush','{"(408)-589-5841"}'), ('William Gate','{"(408)-589-5842","(408)-589-5843"}');A função unnest() expande uma matriz numa lista de linhas. Por exemplo, a consulta seguinte expande todos os números de telefone da matriz phones.
SELECT name, unnest(phones)FROM contacts;Resultado:
| name | unnest |
|---|---|
| John Doe | (408)-589-5846 |
| John Doe | (408)-589-5555 |
| Lily Bush | (408)-589-5841 |
| William Gate | (408)-589-5843 |