

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

# Fase 2: creare una tabella
<a name="step-2-create-a-table"></a>

Ora che hai un database, puoi creare una tabella Athena. La tabella che creerai si baserà su esempi di dati di CloudFront log Amazon nella posizione in cui `s3://athena-examples-myregion/cloudfront/plaintext/` si *myregion* trova la tua posizione attuale Regione AWS.

I dati di log di esempio sono in formato TSV (Tab-Separated Values), il che significa che un carattere di tabulazione viene utilizzato come delimitatore per separare i campi. I dati vengono mostrati come nell'esempio seguente. Per la leggibilità, le tabulazioni nell'estratto sono state convertite in spazi e il campo finale è stato abbreviato. 

```
2014-07-05 20:00:09 DFW3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:09 DFW3 4252 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0[...]
2014-07-05 20:00:10 AMS1 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-3.jpeg 200 - Mozilla/5.0[...]
```

Per consentire ad Athena di leggere questi dati, puoi creare un'istruzione `CREATE EXTERNAL TABLE` chiara come la seguente. L'istruzione che crea la tabella definisce le colonne che mappano i dati, specifica la modalità di delimitazione dei dati e specifica la posizione Amazon S3 che contiene i dati di esempio. Tieni presente che, poiché Athena prevede di scansionare tutti i file in una cartella, la `LOCATION` clausola specifica una posizione della cartella Amazon S3, non un file specifico. 

Non utilizzate ancora questo esempio in quanto presenta un'importante limitazione che verrà spiegata a breve.

```
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
  `Date` DATE,
  Time STRING,
  Location STRING,
  Bytes INT,
  RequestIP STRING,
  Method STRING,
  Host STRING,
  Uri STRING,
  Status INT,
  Referrer STRING,
  ClientInfo STRING
  ) 
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  LINES TERMINATED BY '\n'
  LOCATION 's3://athena-examples-my-region/cloudfront/plaintext/';
```

L'esempio crea una tabella denominata `cloudfront_logs` e specifica un nome e un tipo di dati per ogni campo. Questi campi diventano le colonne nella tabella. Poiché `date` è una [parola riservata](reserved-words.md#list-of-ddl-reserved-words), viene eliminata con caratteri backtick (`). `ROW FORMAT DELIMITED`significa che Athena utilizzerà una libreria predefinita chiamata [LazySimpleSerDe](lazy-simple-serde.md)per eseguire l'effettivo lavoro di analisi dei dati. L'esempio specifica inoltre che i campi sono separati da tabulazioni (`FIELDS TERMINATED BY '\t'`) e che ogni record nel file termina con un carattere di nuova riga (`LINES TERMINATED BY '\n`). Infine, la clausola `LOCATION` specifica il percorso in Amazon S3 in cui si trovano i dati effettivi da leggere. 

Se si dispone di una scheda o di dati separati da virgole, puoi utilizzare una dichiarazione `CREATE TABLE` come l’esempio appena illustrato. Tuttavia, se una colonna del genere contiene informazioni annidate `ClientInfo` che utilizzano un delimitatore diverso, è necessario un approccio diverso.

**Estrazione di dati dal campo ClientInfo**  
Guardando i dati di esempio, ecco un esempio completo del campo finale `ClientInfo`:

```
Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9
```

Come puoi vedere, questo campo è multivalore. Poiché l’istruzione di esempio `CREATE TABLE` specifica le schede come delimitatori di campo, i componenti separati all’interno del campo `ClientInfo` non possono essere suddivisi in colonne separate. Quindi, è necessaria una nuova `CREATE TABLE` dichiarazione.

Per creare colonne dai valori all’interno del campo `ClientInfo`, è possibile utilizzare un’[espressione regolare](https://en.wikipedia.org/wiki/Regular_expression) (regex) che contiene gruppi regex. I gruppi regex specificati diventano colonne di tabella separate. Per usare una regex nella tua istruzione `CREATE TABLE`, utilizzare la sintassi simile alla seguente. Questa sintassi indica ad Athena di utilizzare la libreria [Regex SerDe](regex-serde.md) e l'espressione regolare specificata.

```
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
  WITH SERDEPROPERTIES ("input.regex" = "regular_expression")
```

Le espressioni regolari possono essere utili per la creazione di tabelle da dati CSV o TSV complessi, ma possono essere difficili da scrivere e gestire. Fortunatamente, ci sono altre librerie che è possibile utilizzare per formati come JSON, Parquet e ORC. Per ulteriori informazioni, consulta [Scegli un file SerDe per i tuoi dati](supported-serdes.md).

Ora è possibile creare la tabella nell'editor di query Athena. L'istruzione `CREATE TABLE` e la regex ti vengono forniti.

**Per creare una tabella in Athena**

1. Nel pannello di navigazione, in **Database**, assicurarsi che `mydatabase` sia selezionato.

1. Per avere più spazio nell'editor di query, è possibile scegliere l'icona a forma di freccia e comprimere il pannello di navigazione.  
![\[Scegli la freccia per comprimere il pannello di navigazione.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/getting-started-collapse-nav-pane.png)

1. Scegli il segno più (**\$1**) nell'editor delle query per creare una scheda per una nuova query. È possibile avere fino a dieci schede di query aperte contemporaneamente.  
![\[Scegliere l'icona più per creare una nuova query.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/getting-started-new-query-tab.png)

1. Per chiudere una o più schede di query, scegli la freccia accanto al segno più. Per chiudere tutte le schede contemporaneamente, scegliere la freccia, quindi scegli **Close all tabs** (Chiudi tutte le schede).  
![\[Scegli l'icona a forma di freccia per chiudere una o più schede di query.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/close-all-query-editor-tabs.png)

1. Nel riquadro delle query inserire la seguente istruzione `CREATE EXTERNAL TABLE`. La regex suddivide le informazioni sul sistema operativo, sul browser e sulla versione del browser dal campo `ClientInfo` nei dati di log.
**Nota**  
L'espressione regolare utilizzata nell'esempio seguente è progettata per funzionare con i dati di CloudFront log di esempio disponibili pubblicamente nella posizione `athena-examples` Amazon S3 ed è solo illustrativa. Per altre up-to-date espressioni regolari che interrogano file di log standard e in tempo reale CloudFront , consulta. [Interroga i CloudFront log di Amazon](cloudfront-logs.md)

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
     `Date` DATE,
     Time STRING,
     Location STRING,
     Bytes INT,
     RequestIP STRING,
     Method STRING,
     Host STRING,
     Uri STRING,
     Status INT,
     Referrer STRING,
     os STRING,
     Browser STRING,
     BrowserVersion STRING
     ) 
     ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
     WITH SERDEPROPERTIES (
     "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$"
     ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';
   ```

1. Nell'`LOCATION`istruzione, sostituitela *myregion* con quella Regione AWS che state utilizzando attualmente (ad esempio,`us-west-1`). 

1. Scegli **Esegui**.

   Viene creata la tabella `cloudfront_logs` che appare nell'elenco **Tables (Tabelle)** del database `mydatabase`.