

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Ejemplos de UNNEST
<a name="r_FROM_clause-unnest-examples"></a>

UNNEST es un parámetro de la cláusula FROM que expande los datos anidados en columnas que contienen los elementos no anidados de los datos. Para obtener información sobre cómo anular el anidamiento de los datos, consulte [Consulta de datos semiestructurados](query-super.md).

La siguiente instrucción crea y rellena la tabla `orders`, que contiene una columna `products` con matrices de ID de productos. En los ejemplos de esta sección se utilizan los datos de ejemplo de esta tabla. 

```
CREATE TABLE orders (
    order_id INT,
    products SUPER
);

-- Populate table
INSERT INTO orders VALUES
(1001, JSON_PARSE('[
        {
            "product_id": "P456",
            "name": "Monitor",
            "price": 299.99,
            "quantity": 1,
            "specs": {
                "size": "27 inch",
                "resolution": "4K"
            }
        }
    ]
')),
(1002, JSON_PARSE('
    [
        {
            "product_id": "P567",
            "name": "USB Cable",
            "price": 9.99,
            "quantity": 3
        },
        {
            "product_id": "P678",
            "name": "Headphones",
            "price": 159.99,
            "quantity": 1,
            "specs": {
                "type": "Wireless",
                "battery_life": "20 hours"
            }
        }
    ]
'));
```

A continuación se muestran algunos ejemplos de consultas de anulación de anidamiento con los datos de ejemplo mediante la sintaxis PartiQL.

## Anulación del anidamiento de una matriz sin una columna OFFSET
<a name="r_FROM_clause-unnest-examples-no-offset"></a>

La siguiente consulta anula el anidamiento de las matrices SUPER en la columna products, donde cada fila representa un elemento del pedido en `order_id`.

```
SELECT o.order_id, unnested_products.product
FROM orders o, UNNEST(o.products) AS unnested_products(product);

 order_id |                                                           product                                                           
----------+-----------------------------------------------------------------------------------------------------------------------------
     1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}}
     1002 | {"product_id":"P567","name":"USB Cable","price":9.99,"quantity":3}
     1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}}
(3 rows)
```

La siguiente consulta encuentra el producto más caro de cada pedido.

```
SELECT o.order_id, MAX(unnested_products.product)
FROM orders o, UNNEST(o.products) AS unnested_products(product);

 order_id |                                                           product                                                           
----------+-----------------------------------------------------------------------------------------------------------------------------
     1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}}
     1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}}
(2 rows)
```

## Anulación del anidamiento de una matriz con una columna OFFSET implícita
<a name="r_FROM_clause-unnest-examples-implicit-offset"></a>

La siguiente consulta utiliza el parámetro `UNNEST ... WITH OFFSET` para mostrar la posición basada en cero de cada producto en la matriz de pedidos.

```
SELECT o.order_id, up.product, up.offset_col
FROM orders o, UNNEST(o.products) WITH OFFSET AS up(product);

 order_id |                                                           product                                                           | offset_col 
----------+-----------------------------------------------------------------------------------------------------------------------------+------------
     1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}}             |          0
     1002 | {"product_id":"P567","name":"USB Cable","price":9.99,"quantity":3}                                                          |          0
     1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}} |          1
(3 rows)
```

Dado que la instrucción no especifica un alias para la columna de desplazamiento, Amazon Redshift le asigna el nombre predeterminado `offset_col`.

## Anulación del anidamiento de una matriz con una columna OFFSET explícita
<a name="r_FROM_clause-unnest-examples-explicit-offset"></a>

La siguiente consulta también utiliza el parámetro `UNNEST ... WITH OFFSET` para mostrar los productos en las matrices de pedidos. La diferencia entre esta consulta y la del ejemplo anterior es que designa explícitamente la columna de desplazamiento con el alias `idx`.

```
SELECT o.order_id, up.product, up.idx
FROM orders o, UNNEST(o.products) WITH OFFSET AS up(product, idx);

 order_id |                                                           product                                                           | idx 
----------+-----------------------------------------------------------------------------------------------------------------------------+-----
     1001 | {"product_id":"P456","name":"Monitor","price":299.99,"quantity":1,"specs":{"size":"27 inch","resolution":"4K"}}             |   0
     1002 | {"product_id":"P567","name":"USB Cable","price":9.99,"quantity":3}                                                          |   0
     1002 | {"product_id":"P678","name":"Headphones","price":159.99,"quantity":1,"specs":{"type":"Wireless","battery_life":"20 hours"}} |   1
(3 rows)
```