

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

# Tabelle Delta Lake di Linux Foundation
<a name="delta-lake-tables"></a>

[Delta Lake](https://delta.io/) di Linux Foundation è un formato di tabella per l’analisi dei big data. Puoi utilizzare Amazon Athena per leggere direttamente le tabelle Delta Lake archiviate in Amazon S3 senza dover generare file di manifesto o eseguire l'istruzione `MSCK REPAIR`.

Il formato Delta Lake archivia i valori minimi e massimi per colonna di ogni file di dati. L'implementazione di Athena utilizza queste informazioni per consentire di saltare i file sui predicati per non considerare i file indesiderati.

## Considerazioni e limitazioni
<a name="delta-lake-tables-considerations-and-limitations"></a>

Il supporto per Delta Lake in Athena ha le seguenti limitazioni:
+ **Solo tabelle con AWS Glue catalogo**: il supporto nativo di Delta Lake è supportato solo tramite tabelle registrate con AWS Glue. Se hai una tabella Delta Lake registrata con un altro metastore, puoi comunque conservarla e trattarla come metastore principale. Poiché i metadati Delta Lake sono archiviati nel file system (ad esempio, in Amazon S3) anziché nel metastore, Athena richiede solo la AWS Glue proprietà location in per leggere le tabelle Delta Lake.
+ **Solo motore V3**: le query Delta Lake sono supportate solo sulla versione 3 del motore Athena. È necessario assicurarsi che il gruppo di lavoro creato sia configurato per l'utilizzo della versione 3 del motore Athena.
+ **Supporto per le query temporali non disponibile**: non è disponibile alcun supporto per le query che utilizzano le funzionalità temporali di Delta Lake.
+ **Sola lettura**: le istruzioni DML di scrittura come `UPDATE`, `INSERT` o `DELETE` non sono supportate.
+ **Supporto di Lake Formation**: l'integrazione di Lake Formation non è disponibile per tabelle Delta Lake con il relativo schema sincronizzato con AWS Glue. *Per ulteriori informazioni, consulta [Utilizzo AWS Lake Formation con Amazon Athena](https://docs.aws.amazon.com/lake-formation/latest/dg/athena-lf.html) e [Configurazione delle autorizzazioni per una tabella Delta Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/set-up-delta-table.html) nella Guida per gli AWS Lake Formation sviluppatori.*
+ **Supporto DDL limitato**: sono supportate le seguenti istruzioni DDL: `CREATE EXTERNAL TABLE`, `SHOW COLUMNS`, `SHOW TBLPROPERTIES`, `SHOW PARTITIONS`, `SHOW CREATE TABLE` e `DESCRIBE`. Per informazioni sull'utilizzo dell'istruzione `CREATE EXTERNAL TABLE`, consulta la sezione [Inizia a usare le tabelle Delta Lake](delta-lake-tables-getting-started.md).
+ **Ignorare gli oggetti Amazon Glacier non è supportato**: se gli oggetti nella tabella Delta Lake di Linux Foundation si trovano in una classe di archiviazione Amazon Glacier, l’impostazione della proprietà della tabella `read_restored_glacier_objects` su `false` non ha alcun effetto.

  Ad esempio, supponiamo di emettere il seguente comando:

  ```
  ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')
  ```

  Per le tabelle Iceberg e Delta Lake, il comando produce l'errore Chiave delle proprietà della tabella non supportata: read\$1restored\$1glacier\$1objects. Per le tabelle Hudi, il comando `ALTER TABLE` non produce un errore, ma gli oggetti Amazon Glacier ancora non verranno ignorati. L'esecuzione delle query `SELECT` dopo il comando `ALTER TABLE` continuerà a restituire tutti gli oggetti.
+ **Tabelle crittografate**: Athena non supporta la lettura nativa di tabelle Delta Lake crittografate CSE-KMS. Ciò include le istruzioni SELECT e le istruzioni DDL.

### Controllo delle versioni di Delta Lake e Athena
<a name="delta-lake-tables-versioning"></a>

Athena non utilizza il [controllo delle versioni](https://docs.delta.io/latest/releases.html) elencate nella documentazione di Delta Lake. Per determinare se le tue tabelle Delta Lake sono compatibili con Athena, considera le due caratteristiche seguenti:
+ **Versione Reader**: ogni tabella Delta Lake ha una versione Reader. Attualmente, si tratta di un numero compreso tra 1 e 3. Le interrogazioni che includono una tabella con una versione di lettura non supportata da Athena avranno esito negativo.
+ **Caratteristiche della tabella**: ogni tabella Delta Lake può anche dichiarare un set di funzionalità. reader/writer Poiché il supporto di Athena per Delta Lake è di sola lettura, la compatibilità delle funzionalità di table writer non si applica. Tuttavia, le interrogazioni su tabelle con funzionalità di lettura delle tabelle non supportate avranno esito negativo.

La tabella seguente mostra le versioni del lettore Delta Lake e le funzionalità del lettore da tavolo Delta Lake supportate da Athena.


****  

| Tipo di query | Versioni di Redis supportate | Funzionalità di lettura supportate | 
| --- | --- | --- | 
| DQL (istruzioni SELECT) |  = 3 | [Mappatura delle colonne, timestampNTZ](https://docs.delta.io/latest/delta-column-mapping.html) [https://github.com/delta-io/delta/blob/master/PROTOCOL.md#timestamp-without-timezone-timestampntz](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#timestamp-without-timezone-timestampntz) | 
| DDL |  = 1 | Non applicabile. Le funzionalità del lettore possono essere dichiarate solo su tabelle con una versione del lettore pari o superiore a 2. | 
+ Per un elenco delle caratteristiche delle tabelle Delta Lake, consulta [Nomi di funzionalità validi nelle caratteristiche delle tabelle](https://github.com/delta-io/delta/blob/master/PROTOCOL.md#valid-feature-names-in-table-features) su .com GitHub
+ Per un elenco delle funzionalità di Delta Lake suddivise per versione del protocollo, consulta [Funzionalità per versione del protocollo](https://docs.delta.io/latest/versioning.html#features-by-protocol-version) su GitHub .com.

Per creare una tabella Delta Lake in Athena con una versione del lettore superiore a 1, vedi. [Sincronizzazione dei metadati Delta Lake](delta-lake-tables-syncing-metadata.md)

**Topics**
+ [Considerazioni e limitazioni](#delta-lake-tables-considerations-and-limitations)
+ [Tipi di dati supportati per colonne partizionate](delta-lake-tables-supported-data-types-columns.md)
+ [Inizia a usare le tabelle Delta Lake](delta-lake-tables-getting-started.md)
+ [Esecuzione di query sulle tabelle Delta Lake con SQL](delta-lake-tables-querying.md)
+ [Sincronizzazione dei metadati Delta Lake](delta-lake-tables-syncing-metadata.md)
+ [Risorse aggiuntive](delta-lake-tables-additional-resources.md)

# Tipi di dati supportati per colonne partizionate
<a name="delta-lake-tables-supported-data-types-columns"></a>

Questa sezione descrive i tipi di dati supportati per le colonne non di partizione e per le colonne di partizione. 

## Tipi di dati supportati per colonne non partizionate
<a name="delta-lake-tables-supported-data-types-non-partition-columns"></a>

Per le colonne non partizionate, sono supportati tutti i tipi di dati supportati da Athena tranne `CHAR` (`CHAR` non è supportato dal protocollo Delta Lake stesso). I tipi di dati supportati includono:

```
boolean
tinyint
smallint
integer
bigint
double
float
decimal
varchar
string
binary
date
timestamp
array
map
struct
```

## Tipi di dati supportati per colonne partizionate
<a name="delta-lake-tables-supported-data-types-partition-columns"></a>

Per le colonne partizionate, Athena supporta tabelle con i seguenti tipi di dati:

```
boolean
integer
smallint
tinyint
bigint
decimal
float
double
date
timestamp
varchar
```

Per ulteriori informazioni sui tipi di dati in Athena, consulta la pagina [Tipi di dati in Amazon Athena](data-types.md).

# Inizia a usare le tabelle Delta Lake
<a name="delta-lake-tables-getting-started"></a>

Per essere interrogabile, la tua tabella Delta Lake deve esistere in. AWS Glue Se la tabella è in Amazon S3 ma non in AWS Glue, esegui un'`CREATE EXTERNAL TABLE`istruzione utilizzando la seguente sintassi. Se la tabella esiste già in AWS Glue (ad esempio, perché utilizzi Apache Spark o un altro motore con AWS Glue), puoi saltare questo passaggio. Nota l'omissione delle definizioni delle colonne, delle SerDe librerie e di altre proprietà delle tabelle. A differenza delle tabelle Hive tradizionali, i metadati delle tabelle Delta Lake vengono dedotti dal registro delle transazioni di Delta Lake e sincronizzati direttamente con. AWS Glue

```
CREATE EXTERNAL TABLE
  [db_name.]table_name
  LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
  TBLPROPERTIES ('table_type' = 'DELTA')
```

**Nota**  
Questa istruzione non è compatibile con i bucket S3 su cui sono abilitati i pagamenti del richiedente. Se desideri creare una tabella Delta Lake su un bucket S3 con i pagamenti del richiedente abilitati, segui le istruzioni e l’istruzione DDL in. [Sincronizzazione dei metadati Delta Lake](delta-lake-tables-syncing-metadata.md)
Per le tabelle Delta Lake, non sono ammesse istruzioni `CREATE TABLE` che includono più delle proprietà `LOCATION` e `table_type`.

# Esecuzione di query sulle tabelle Delta Lake con SQL
<a name="delta-lake-tables-querying"></a>

Per eseguire query su una tabella Delta Lake, utilizza la sintassi `SELECT` SQL standard:

```
[ WITH with_query [, ...] ]SELECT [ ALL | DISTINCT ] select_expression [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
[ HAVING condition ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ]
[ OFFSET count [ ROW | ROWS ] ]
[ LIMIT [ count | ALL ] ]
```

Per ulteriori informazioni sulla sintassi `SELECT`, consulta la pagina [SELECT](select.md) nella documentazione di Athena.

Il formato Delta Lake archivia i valori minimi e massimi per colonna di ogni file di dati. Athena utilizza queste informazioni per consentire di saltare i file sui predicati per non considerare i file superflui.

# Sincronizzazione dei metadati Delta Lake
<a name="delta-lake-tables-syncing-metadata"></a>

Athena sincronizza i metadati della tabella, inclusi schema, colonne di partizione e proprietà della tabella, con se AWS Glue usi Athena per creare la tua tabella Delta Lake. Con il passare del tempo, questi metadati possono perdere la sincronizzazione con i metadati della tabella sottostante nel log delle transazioni. Per mantenere aggiornata la tua tabella, puoi scegliere una delle seguenti opzioni:
+ Usa il AWS Glue crawler per le tabelle Delta Lake. Per ulteriori informazioni, consulta [Introduzione al supporto nativo delle tabelle Delta Lake con AWS Glue i crawler](https://aws.amazon.com/blogs/big-data/introducing-native-delta-lake-table-support-with-aws-glue-crawlers/) nel *AWS Big Data Blog* e [Scheduling an AWS Glue crawler](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html) nella Developer Guide. AWS Glue 
+ Elimina e ricrea la tabella in Athena.
+ Usa l'SDK, la CLI AWS Glue o la console per aggiornare manualmente lo schema in. AWS Glue

Tieni presente che le seguenti funzionalità richiedono che AWS Glue lo schema abbia sempre lo stesso schema del log delle transazioni:
+ Lake Formation
+ Visualizzazioni
+ Filtri di righe e colonne

Se il tuo flusso di lavoro non richiede nessuna di queste funzionalità e preferisci non mantenere questa compatibilità, puoi utilizzare `CREATE TABLE` DDL in Athena e quindi aggiungere il percorso Amazon S3 come parametro in. SerDe AWS Glue

## Crea una tabella Delta Lake usando Athena e le console AWS Glue
<a name="delta-lake-tables-syncing-metadata-console"></a>

È possibile utilizzare la procedura seguente per creare una tabella Delta Lake con Athena e AWS Glue console.

**Per creare una tabella Delta Lake utilizzando Athena e console AWS Glue**

1. Apri la console Athena all'indirizzo [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Nell'editor di query Athena, utilizza il seguente DDL per creare una tabella Delta Lake. Tiene presente che quando utilizzi questo metodo il valore per `TBLPROPERTIES` deve essere `'spark.sql.sources.provider' = 'delta'` e non `'table_type' = 'delta'`.

   Nota, inoltre, che questo stesso schema (con una sola colonna denominata `col` di tipo `array<string>`) viene inserito quando utilizzi Apache Spark (Athena per Apache Spark) o la maggior parte degli altri motori per creare una tabella.

   ```
   CREATE EXTERNAL TABLE
      [db_name.]table_name(col array<string>)
      LOCATION 's3://amzn-s3-demo-bucket/your-folder/'
      TBLPROPERTIES ('spark.sql.sources.provider' = 'delta')
   ```

1. Apri la AWS Glue console all'indirizzo. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Nel pannello di navigazione, seleziona **Catalogo dati**, **Tabelle**.

1. Nell'elenco delle tabelle, seleziona il link per la tabella.

1. Nella pagina della tabella seleziona **Azioni**, **Modifica tabella**.

1. Nella sezione **Parametri Serde** aggiungi la chiave **path** con il valore **s3://amzn-s3-demo-bucket/*your-folder*/**.

1. Scegli **Save** (Salva).

## Crea una tabella Delta Lake utilizzando il AWS CLI
<a name="delta-lake-tables-syncing-metadata-cli"></a>

Per creare una tabella Delta Lake utilizzando il AWS CLI, immettete un comando come il seguente.

```
aws glue create-table --database-name dbname \
    --table-input '{"Name" : "tablename", "StorageDescriptor":{
            "Columns" : [
                {
                    "Name": "col",
                    "Type": "array<string>"
                }
            ],
            "Location" : "s3://amzn-s3-demo-bucket/<prefix>/",
            "SerdeInfo" : {
                "Parameters" : {
                    "serialization.format" : "1",
                    "path" : "s3://amzn-s3-demo-bucket/<prefix>/"
                }
            }
        },
        "PartitionKeys": [],
        "TableType": "EXTERNAL_TABLE",
        "Parameters": {
            "EXTERNAL": "TRUE",
            "spark.sql.sources.provider": "delta"
        }
    }'
```

# Risorse aggiuntive
<a name="delta-lake-tables-additional-resources"></a>

*Per una discussione sull'utilizzo delle tabelle Delta Lake AWS Glue e sulla loro interrogazione con Athena, [consulta Gestire le operazioni sui dati UPSERT utilizzando Delta Lake open source AWS Glue](https://aws.amazon.com/blogs/big-data/handle-upsert-data-operations-using-open-source-delta-lake-and-aws-glue/) e nel Big Data Blog.AWS *