UNNEST (Lakehouse v1)
Desaninha o array e retorna 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 de SQL
Seção intitulada “Exemplos de 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, usaremos a seguinte tabela chamada contacts, com a coluna phones definida como um array de texto.
CREATE TABLE contacts ( id SERIAL PRIMARY KEY, name VARCHAR (100), phones TEXT []);A coluna phones é um array unidimensional que armazena os vários números de telefone que um contato pode ter.
Para definir um array multidimensional, adicione os colchetes.
Por exemplo, você pode definir um array 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 um array em uma lista de linhas. Por exemplo, a consulta a seguir expande todos os números de telefone do array phones.
SELECT name, unnest(phones)FROM contacts;Saída:
| name | unnest |
|---|---|
| John Doe | (408)-589-5846 |
| John Doe | (408)-589-5555 |
| Lily Bush | (408)-589-5841 |
| William Gate | (408)-589-5843 |