

 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à.

# Creazione di colonne scalari Amazon Redshift da dati suddivisi
<a name="r_create_scalar"></a>

I dati senza schema archiviati in SUPER possono influire sulle prestazioni di Amazon Redshift. Ad esempio, filtrare i predicati o unire le condizioni in quanto le scansioni limitate all'intervallo non possono utilizzare in modo efficace le mappe di zona. Gli utenti e gli strumenti di BI possono utilizzare le viste materializzate come presentazione convenzionale dei dati e aumentare le prestazioni delle query analitiche.

La query seguente esegue la scansione della vista materializzata `super_mv` e filtra su `o_orderstatus`.

```
SELECT c.c_name, v.o_totalprice
FROM customer_orders_lineitem c
JOIN super_mv v ON c.c_custkey = v.c_custkey
WHERE v.o_orderstatus = 'F';
```

Ispezionare `stl_scan` per verificare che Amazon Redshift non sia in grado di utilizzare in modo efficace le mappe delle zone nella scansione con limiti di intervallo su `o_orderstatus`.

```
SELECT slice, is_rrscan FROM stl_scan
WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%';

 slice | is_rrscan 
-------+-----------
     0 | f
     1 | f
     5 | f
     4 | f
     2 | f
     3 | f
(6 rows)
```

Nell'esempio seguente viene eseguito l'adattamento della vista materializzata `super_mv` per creare colonne scalari fuori dai dati suddivisi. In questo caso, Amazon Redshift avvia `o_orderstatus` da SUPER a VARCHAR. Inoltre, specificare `o_orderstatus` come chiave di ordinamento per `super_mv`.

```
CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey, o_orderstatus) AS (
  SELECT c_custkey, o.o_orderstatus::VARCHAR AS o_orderstatus, o.o_totalprice, o_idx
  FROM customer_orders_lineitem c, c.c_orders o AT o_idx
);
```

Dopo aver rieseguito la query, verificare che Amazon Redshift possa ora utilizzare le mappe delle zone.

```
SELECT v.o_totalprice
FROM super_mv v
WHERE v.o_orderstatus = 'F';
```

È possibile verificare che la scansione con limiti di intervallo ora utilizzi mappe di zona come indicato di seguito.

```
SELECT slice, is_rrscan FROM stl_scan
WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%';

 slice | is_rrscan 
-------+-----------
     0 | t
     1 | t
     2 | t
     3 | t
     4 | t
     5 | t
(6 rows)
```