

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

# Formati di dati e mappatura dei tipi
<a name="aurora-analytics-type-mapping"></a>

Quando crei una tabella esterna, l'estensione mappa i tipi di dati da Parquet o Iceberg ai tipi di dati PostgreSQL. Questa sezione descrive come Aurora PostgreSQL esegue la mappatura dei tipi e quali tipi di dati PostgreSQL sono supportati.

**Topics**
+ [Mappatura automatica dei tipi di dati](#aurora-analytics-type-mapping-automatic)
+ [Tipi non supportati per l'inferenza automatica dello schema](#aurora-analytics-type-mapping-unsupported-inference)
+ [Tipi di dati per le colonne di tabelle esterne](#aurora-analytics-type-mapping-column-types)

## Mappatura automatica dei tipi di dati
<a name="aurora-analytics-type-mapping-automatic"></a>

Quando si crea una tabella esterna senza specificare le definizioni delle colonne (utilizzando parentesi vuote), Aurora PostgreSQL deduce automaticamente i nomi delle colonne e i tipi di dati dall'origine dati remota.

La tabella seguente mostra come vengono dedotti i tipi di origine esistenti sia in Parquet che in Iceberg.


**Inferenza di tipo per i tipi di sorgenti Parquet e Iceberg**  

| Tipo di parquet | Tipo Iceberg | Tipo PostgreSQL | 
| --- | --- | --- | 
| BOOLEAN | boolean | boolean | 
| INT32 | int | integer | 
| INT64 | long | bigint | 
| FLOAT | float | real | 
| DOUBLE | double | double precision | 
| DECIMAL(p,s) | decimal(p,s) | numeric(p,s) | 
| BYTE\_ARRAY | binary | bytea | 
| FIXED\_LEN\_BYTE\_ARRAY | fixed(L) | bytea | 
| STRING (UTF-8) | string | text | 
| UUID | uuid | uuid | 
| DATE | date | date | 
| TIME (millis/micros, isAdjustedToUTC = false) | time | time | 
| TIMESTAMP (micros/millis, isAdjustedToUTC = false) | timestamp | timestamp | 
| TIMESTAMP(nanos,) isAdjustedToUTC = false | timestamp\_ns | timestamp | 
| TIMESTAMP (micros/millis, isAdjustedToUTC = true) | timestamptz | timestamptz | 
| TIMESTAMP(nanos,) isAdjustedToUTC = true | timestamptz\_ns | timestamptz | 

I seguenti tipi di Parquet aggiuntivi non hanno equivalenti a Iceberg e sono dedotti come mostrato.


**Inferenza dei tipi per i tipi di sorgenti Parquet-only**  

| Tipo di parquet | Tipo PostgreSQL | 
| --- | --- | 
| INT\_8(int da 1 byte) | smallint | 
| INT16 | smallint | 
| UNSIGNED INT8 | smallint | 
| UNSIGNED INT16 | integer | 
| UNSIGNED INT32 | bigint | 
| UNSIGNED INT64 | numeric(20,0) | 
| ENUM(logico) | varchar | 
| JSON | json | 
| TIME (millis/micros, isAdjustedToUTC = true) | timetz | 
| Timestamp precedente (nanosecondo) | timestamp | 
| INTERVAL | interval | 
| BIT | varbit | 

## Tipi non supportati per l'inferenza automatica dello schema
<a name="aurora-analytics-type-mapping-unsupported-inference"></a>

I seguenti tipi di sorgenti remote non possono essere dedotti automaticamente. Quando si crea una tabella esterna con un elenco di colonne vuoto e l'origine contiene uno di questi tipi, `CREATE FOREIGN TABLE` restituisce un errore:
+ `STRUCT`
+ `MAP`
+ `LIST`
+ `GEOMETRY`
+ `GEOGRAPHY`

È possibile gestire queste colonne in due modi:
+ **Ignorali**: imposta `true` in modo `aurora_analytics.skip_unsupported_columns` che l'inferenza automatica dello schema salti le colonne non supportate e crei la tabella esterna con le colonne rimanenti. Viene emesso un avviso per ogni colonna ignorata.
+ **Definiscile manualmente**: specifica l'elenco delle colonne in modo esplicito e dichiara le colonne struct, map o nidificate come `json` (o `varchar` per una rappresentazione testuale nativa). Aurora PostgreSQL restituisce quindi i dati in formato JSON standard.

```
CREATE FOREIGN TABLE my_table (
    id integer,
    name text,
    struct_col json,
    map_col json,
    list_of_struct json
)
SERVER aurora_analytics_server
OPTIONS (location 's3://my-bucket/data/', format 'parquet');
```

## Tipi di dati per le colonne di tabelle esterne
<a name="aurora-analytics-type-mapping-column-types"></a>

Tutti i tipi di dati PostgreSQL funzionano nelle query di tabelle esterne (nelle espressioni, nei risultati e nei join) proprio come in qualsiasi query PostgreSQL. Le sezioni seguenti riguardano una domanda più ristretta: in quali tipi è possibile definire una colonna di tabella esterna e in quali tipi il motore analitico può leggere una colonna Parquet o Iceberg. Un tipo che non è supportato qui non può essere usato come tipo di colonna di una tabella esterna, ma è comunque possibile utilizzarlo liberamente altrove nella stessa query.

### Tipi completamente supportati
<a name="aurora-analytics-type-mapping-fully-supported"></a>

I seguenti tipi di dati PostgreSQL sono completamente supportati come tipi di colonne di tabelle esterne`BOOLEAN`:`BYTEA`,,,,`INTEGER`,,`SMALLINT`, `BIGINT` `REAL``DOUBLE PRECISION`, `TEXT` e. `JSON` `DATE` `UUID`

### Tipi parzialmente supportati
<a name="aurora-analytics-type-mapping-partially-supported"></a>

I seguenti tipi di dati PostgreSQL sono supportati con limitazioni.


**Tipi di colonne di tabelle esterne parzialmente supportati**  

| Tipo PostgreSQL | Limitazione | 
| --- | --- | 
| VARCHAR, BPCHAR | I vincoli di lunghezza non sono supportati (ad esempio, o). VARCHAR(n) CHAR(n) | 
| NUMERIC, DECIMAL | La precisione (P) e la scala (S) devono essere definite in modo esplicito. P deve essere compreso tra 1 e 38. S deve essere compreso tra 0 e P. | 
| TIME, TIMETZ | È supportata solo la massima precisione (6). | 
| TIMESTAMP, TIMESTAMPTZ | È supportata solo la massima precisione (6). | 
| BIT, VARBIT | I vincoli di lunghezza non sono supportati (ad esempio, BIT(n) oVARBIT(n)). | 
| INTERVAL | È supportata solo la massima precisione (6). I valori speciali inf-inf, e non NaN sono supportati. | 

### Tipi non supportati per le colonne di tabelle esterne
<a name="aurora-analytics-type-mapping-not-supported"></a>

I seguenti tipi di dati PostgreSQL non possono essere utilizzati come tipi di colonne di tabelle esterne. Se una colonna di tabella esterna è definita come uno di questi tipi (o una colonna di origine viene mappata a una colonna durante l'inferenza dello schema), `CREATE FOREIGN TABLE` restituisce un errore. È comunque possibile utilizzare questi tipi altrove in una query (ad esempio, creando un `JSONB` valore nell'`SELECT`elenco o filtrando con una matrice) perché la restrizione riguarda la definizione della colonna, non l'utilizzo della query.


**Tipi di colonne di tabelle esterne non supportati**  

| Tipo PostgreSQL | Note | 
| --- | --- | 
| JSONB | — | 
| SMALLSERIAL, SERIAL, BIGSERIAL | — | 
| Tipi di array | Ad esempio, INTEGER[], TEXT[]. | 
| ENUM | — | 
| INET, CIDR, MACADDR, MACADDR8 | — | 
| MONEY | — | 
| Tipi di intervallo | Ad esempioINT4RANGE,TSRANGE,DATERANGE. | 
| Tipi geometrici | Ad esempio, POINT, LINE, POLYGON, CIRCLE. | 
| TSVECTOR, TSQUERY | — | 
| XML | — | 

**Nota**  
Quando Aurora PostgreSQL deduce automaticamente lo schema di una tabella esterna e l'origine contiene colonne che non può mappare, per impostazione predefinita genera errori. Imposta invece il `aurora_analytics.skip_unsupported_columns` parametro su per `true` ignorare quelle colonne e crea la tabella esterna con le colonne supportate rimanenti.