UNNEST (Lakehouse v1)
Desanida el arreglo y devuelve el conjunto de elementos.
Sintaxis de Analyze
Sección titulada «Sintaxis de Analyze»func.unnest( <array> )Ejemplos de Analyze
Sección titulada «Ejemplos de Analyze»func.unnest([1, 2])
┌──────────────────────┐│ func.unnest([1, 2]) │├──────────────────────┤│ 1 ││ 2 │└──────────────────────┘Sintaxis de SQL
Sección titulada «Sintaxis de SQL»UNNEST( <array> )Ejemplos de SQL
Sección titulada «Ejemplos 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 │└─────────────────┘Un ejemplo práctico
Sección titulada «Un ejemplo práctico»En los ejemplos siguientes se usa la siguiente tabla llamada contacts, con la columna phones definida como un arreglo de texto.
CREATE TABLE contacts ( id SERIAL PRIMARY KEY, name VARCHAR (100), phones TEXT []);La columna phones es un arreglo unidimensional que contiene los distintos números de teléfono que puede tener un contacto.
Para definir un arreglo multidimensional, se añaden corchetes.
Por ejemplo, puede definir un arreglo bidimensional de la siguiente manera:
column_name data_type [][]Un ejemplo de inserción de datos en esa tabla
INSERT INTO contacts (name, phones)VALUES('John Doe',ARRAY [ '(408)-589-5846','(408)-589-5555' ]);o
INSERT INTO contacts (name, phones)VALUES('Lily Bush','{"(408)-589-5841"}'), ('William Gate','{"(408)-589-5842","(408)-589-5843"}');La función unnest() expande un arreglo en una lista de filas. Por ejemplo, la siguiente consulta expande todos los números de teléfono del arreglo phones.
SELECT name, unnest(phones)FROM contacts;Salida:
| nombre | unnest |
|---|---|
| John Doe | (408)-589-5846 |
| John Doe | (408)-589-5555 |
| Lily Bush | (408)-589-5841 |
| William Gate | (408)-589-5843 |