

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

# Note per l’utilizzo
<a name="r_CREATE_EXTERNAL_TABLE_usage"></a>

Questo argomento contiene note di utilizzo per [CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md). Non è possibile visualizzare i dettagli per le tabelle Amazon Redshift Spectrum che utilizzano le stesse risorse utilizzate per le tabelle Amazon Redshift standard come [PG\$1TABLE\$1DEF](r_PG_TABLE_DEF.md), [STV\$1TBL\$1PERM](r_STV_TBL_PERM.md), PG\$1CLASS o information\$1schema. Se il tuo strumento di business intelligence o di analisi non riconosce le tabelle esterne Redshift Spectrum, configura l'applicazione per eseguire la query su [SVV\$1EXTERNAL\$1TABLES](r_SVV_EXTERNAL_TABLES.md) e [SVV\$1EXTERNAL\$1COLUMNS](r_SVV_EXTERNAL_COLUMNS.md).

## CREATE EXTERNAL TABLE AS
<a name="r_CETAS"></a>

In alcuni casi, puoi eseguire il comando CREATE EXTERNAL TABLE AS su un catalogo AWS Glue dati, un catalogo AWS Lake Formation esterno o un metastore Apache Hive. In questi casi, si utilizza un ruolo AWS Identity and Access Management (IAM) per creare lo schema esterno. Questo ruolo IAM deve disporre di autorizzazioni di lettura e scrittura per Amazon S3. 

Se si utilizza un catalogo Lake Formation, il ruolo IAM deve disporre dell'autorizzazione per creare una tabella nel catalogo. In questo caso, deve anche disporre dell'autorizzazione per la posizione del data lake sul percorso di destinazione di Amazon S3. Questo ruolo IAM diventa il proprietario della nuova tabella AWS Lake Formation .

Per garantire che i nomi file siano univoci, Amazon Redshift utilizza il seguente formato per il nome di ogni file caricato in Amazon S3 per impostazione predefinita.

`<date>_<time>_<microseconds>_<query_id>_<slice-number>_part_<part-number>.<format>`.

 Un esempio è `20200303_004509_810669_1007_0001_part_00.parquet`.

Quando si esegue il comando CREATE EXTERNAL TABLE AS, considerare quanto segue:
+ La posizione di Amazon S3 deve essere vuota.
+ Quando si utilizza la clausola STORED AS, Amazon Redshift supporta solo i formati PARQUET e TEXTFILE.
+ Non è necessario definire un elenco di definizioni di colonna. I nomi delle colonne e i tipi di dati delle colonne della nuova tabella esterna derivano direttamente dalla query SELECT.
+ Non è necessario definire il tipo di dati della colonna di partizione nella clausola PARTITIONED BY. Se si specifica una chiave di partizione, il nome di questa colonna deve essere presente nel risultato della query SELECT. Quando si dispone di più colonne di partizione, il loro ordine nella query SELECT non ha importanza. Per creare la tabella esterna, Amazon Redshift utilizza l'ordine definito nella clausola PARTITIONED BY.
+ Amazon Redshift suddivide automaticamente i file di output in cartelle di partizione in base ai valori della chiave di partizione. Per impostazione predefinita, Amazon Redshift rimuove le colonne di partizione dai file di output.
+ La clausola LINES TERMINATE BY 'delimiter' non è supportata.
+ La clausola ROW FORMAT SERDE 'serde\$1name' non è supportata.
+ L'utilizzo dei file manifest non è supportato. Pertanto, non è possibile definire la clausola LOCATION in un file manifest su Amazon S3.
+ Amazon Redshift aggiorna automaticamente la proprietà della tabella 'numRows' alla fine del comando.
+ La proprietà di tabella 'compression\$1type' accetta solo 'none' o 'snappy' per il formato di file PARQUET.
+ Amazon Redshift non consente la clausola LIMIT nella query SELECT esterna. È possibile invece utilizzare una clausola LIMIT nidificata.
+ È possibile utilizzare STL\$1UNLOAD\$1LOG per tenere traccia dei file scritti in Amazon S3 da ogni operazione CREATE EXTERNAL TABLE AS.

## Autorizzazioni per creare ed eseguire query sulle tabelle esterne
<a name="r_CREATE_EXTERNAL_TABLE_usage-permissions"></a>

Per creare tabelle esterne, assicurarsi di essere il proprietario dello schema esterno o un utente con privilegi avanzati. Per trasferire la proprietà di uno schema esterno, utilizza [ALTER SCHEMA](r_ALTER_SCHEMA.md). L'esempio seguente cambia il proprietario dello schema `spectrum_schema` in `newowner`.

```
alter schema spectrum_schema owner to newowner;
```

Per eseguire una query di Redshift Spectrum, sono necessarie le seguenti autorizzazioni:
+ Autorizzazione di utilizzare lo schema 
+ Autorizzazione di creare tabelle temporanee nel database corrente 

L'esempio seguente concede l'autorizzazione all'utilizzo dello schema `spectrum_schema` al gruppo di utenti `spectrumusers`.

```
grant usage on schema spectrum_schema to group spectrumusers;
```

L'esempio seguente concede l'autorizzazione temporanea per il database `spectrumdb` al gruppo di utenti `spectrumusers`. 

```
grant temp on database spectrumdb to group spectrumusers;
```

## Pseudocolonne
<a name="r_CREATE_EXTERNAL_TABLE_usage-pseudocolumns"></a>

Per impostazione predefinita, Amazon Redshift crea tabelle esterne con le pseudocolonne *\$1path* e *\$1size*. Selezionare queste colonne per visualizzare il percorso ai file di dati su Amazon S3 e le dimensioni dei file di dati per ogni riga restituita da una query. I nomi di colonna *\$1path* e *\$1size* devono essere delimitati da virgolette doppie. La clausola *SELECT \$1* non restituisce le pseudocolonne. Devi includere in modo esplicito i nomi delle colonne *\$1path* e *\$1size* nella tua query, come indicato nel seguente esempio.

```
select "$path", "$size"
from spectrum.sales_part
where saledate = '2008-12-01';
```

Puoi disabilitare la creazione di pseudocolonne per una sessione impostando il parametro di configurazione *spectrum\$1enable\$1pseudo\$1columns* su *false*. 

**Importante**  
La selezione di *\$1size* o *\$1path* comporta dei costi in quanto Redshift Spectrum esegue la scansione dei file di dati su Amazon S3 per determinare la dimensione del set di risultati. Per ulteriori informazioni sui prezzi, consultare [Prezzi di Amazon Redshift](https://aws.amazon.com/redshift/pricing/).

## Impostazione delle opzioni di gestione dati
<a name="r_CREATE_EXTERNAL_TABLE_usage-data-handling"></a>

È possibile impostare i parametri della tabella per specificare la gestione dell'input per i dati da sottoporre a query in tabelle esterne, tra cui: 
+ I caratteri in eccedenza nelle colonne contenenti dati VARCHAR, CHAR e stringa. Per ulteriori informazioni, consultare la proprietà della tabella esterna `surplus_char_handling`.
+ I caratteri non validi nelle colonne contenenti dati VARCHAR, CHAR e stringa. Per ulteriori informazioni, consultare la proprietà della tabella esterna `invalid_char_handling`.
+ Carattere sostitutivo da utilizzare quando si specifica REPLACE per la proprietà della tabella esterna `invalid_char_handling`.
+ Gestione dell'eccedenza cast nelle colonne contenenti dati interi e decimali. Per ulteriori informazioni, consultare la proprietà della tabella esterna `numeric_overflow_handling`.
+ Surplus\$1bytes\$1handling per specificare la gestione dell'input per i byte in eccesso nelle colonne contenenti dati varbyte. Per ulteriori informazioni, consultare la proprietà della tabella esterna `surplus_bytes_handling`.