

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esempi di UNNEST
<a name="r_FROM_clause-unnest-examples"></a>

UNNEST è un parametro della clausola FROM che espande i dati annidati in colonne che contengono gli elementi non annidati dei dati. Per informazioni sull’annullamento dell’annidamento, consulta [Query sui dati semistrutturati](query-super.md).

L'istruzione seguente crea e popola la `orders` tabella, che contiene una `products` colonna contenente matrici di prodotti. IDs Gli esempi in questa sezione utilizzano i dati di esempio riportati in questa tabella. 

```
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"
            }
        }
    ]
'));
```

Di seguito sono riportati alcuni esempi di annullamento dell’annullamento delle query con i dati di esempio utilizzando la sintassi PartiQL.

## Annullamento dell’annidamento di un array senza una colonna OFFSET
<a name="r_FROM_clause-unnest-examples-no-offset"></a>

La seguente query annulla l’annidamento degli array SUPER nella colonna dei prodotti, in cui ogni riga rappresenta un articolo dell’ordine in `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 seguente query trova il prodotto più costoso in ciascun ordine.

```
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)
```

## Annullamento dell’annidamento di un array con una colonna OFFSET implicita
<a name="r_FROM_clause-unnest-examples-implicit-offset"></a>

La seguente query utilizza il parametro `UNNEST ... WITH OFFSET` per mostrare la posizione a base zero di ogni prodotto all’interno del relativo array di ordini.

```
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)
```

Poiché l’istruzione non specifica un alias per la colonna offset, per impostazione predefinita Amazon Redshift le assegna il nome `offset_col`.

## Annullamento dell’annidamento di un array con una colonna di OFFSET esplicita
<a name="r_FROM_clause-unnest-examples-explicit-offset"></a>

La seguente query utilizza il parametro `UNNEST ... WITH OFFSET` anche per mostrare i prodotti all’interno degli array degli ordini. La differenza tra questa query rispetto alla query dell’esempio precedente è che nomina esplicitamente la colonna di offset con l’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)
```