

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

# Crea una tabella per CloudFront i registri in Athena utilizzando la proiezione delle partizioni con Parquet
<a name="create-cloudfront-table-partition-parquet"></a>

L'esempio seguente dell'istruzione CREATE TABLE utilizza automaticamente la proiezione delle partizioni sui CloudFront registri in Parquet, da una distribuzione specificata CloudFront fino a quella presente per una singola distribuzione. Regione AWS Dopo aver eseguito la query con esito positivo, è possibile eseguire query sulla tabella.

```
CREATE EXTERNAL TABLE `cloudfront_logs_parquet_pp`(
`date` string, 
`time` string, 
`x_edge_location` string, 
`sc_bytes` string, 
`c_ip` string, 
`cs_method` string, 
`cs_host` string, 
`cs_uri_stem` string, 
`sc_status` string, 
`cs_referer` string, 
`cs_user_agent` string, 
`cs_uri_query` string, 
`cs_cookie` string, 
`x_edge_result_type` string, 
`x_edge_request_id` string, 
`x_host_header` string, 
`cs_protocol` string, 
`cs_bytes` string, 
`time_taken` string, 
`x_forwarded_for` string, 
`ssl_protocol` string, 
`ssl_cipher` string, 
`x_edge_response_result_type` string, 
`cs_protocol_version` string, 
`fle_status` string, 
`fle_encrypted_fields` string, 
`c_port` string, 
`time_to_first_byte` string, 
`x_edge_detailed_result_type` string, 
`sc_content_type` string, 
`sc_content_len` string, 
`sc_range_start` string, 
`sc_range_end` string)
PARTITIONED BY(
 distributionid string,
 year int,
 month int,
 day int,
 hour int )
ROW FORMAT SERDE 
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://amzn-s3-demo-bucket/AWSLogs/AWS_ACCOUNT_ID/CloudFront/'
TBLPROPERTIES (
'projection.distributionid.type'='enum',
'projection.distributionid.values'='E3OK0LPUNWWO3',
'projection.day.range'='01,31',
'projection.day.type'='integer',
'projection.day.digits'='2',
'projection.enabled'='true',
'projection.month.range'='01,12',
'projection.month.type'='integer',
'projection.month.digits'='2',
'projection.year.range'='2019,2025',
'projection.year.type'='integer',
'projection.hour.range'='01,12',
'projection.hour.type'='integer',
'projection.hour.digits'='2',
'storage.location.template'='s3://amzn-s3-demo-bucket/AWSLogs/AWS_ACCOUNT_ID/CloudFront/${distributionid}/${year}/${month}/${day}/${hour}/')
```

Di seguito sono riportate alcune considerazioni sulle proprietà utilizzate nell’esempio precedente.
+ **Nome tabella**: il nome della tabella *`cloudfront_logs_pp`* è sostituibile. È possibile cambiarlo con il nome che si desidera.
+ **Posizione**: modificare `s3://amzn-s3-demo-bucket/AWSLogs/AWS_ACCOUNT_ID/` in modo che punti al proprio bucket Amazon S3.
+ **Distribuzione IDs**: per`projection.distributionid.values`, è possibile specificare più distribuzioni IDs se le si separano con virgole. Ad esempio, *<distributionID1>*, *<distributionID2>*.
+ **Intervallo di anni**: nel `projection.year.range`, è possibile definire l’intervallo di anni in base ai propri dati. Ad esempio, è possibile adattarlo a qualsiasi periodo, come *2025*, *2026*.
**Nota**  
L’inclusione di partizioni vuote, come quelle per date future (esempio: 2025-2040), può influire sulle prestazioni delle query. Tuttavia, la proiezione delle partizioni è progettata proprio per gestire in maniera efficace date future. Per mantenere prestazioni ottimali, assicurarsi che le partizioni siano gestite con attenzione ed evitare troppe partizioni vuote quando possibile.
+ **Modello di posizione di archiviazione**: è necessario assicurarsi di aggiornarlo `storage.location.template` correttamente in base alla seguente struttura di CloudFront partizionamento e al percorso S3.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/create-cloudfront-table-partition-parquet.html)

  Dopo aver verificato che la struttura di CloudFront partizionamento e la struttura S3 corrispondono ai modelli richiesti, aggiornali come segue: `storage.location.template`

  ```
  'storage.location.template'='s3://amzn-s3-demo-bucket/AWSLogs/account_id/CloudFront/${distributionid}/folder2/${year}/${month}/${day}/${hour}/folder3/'
  ```
**Nota**  
La corretta configurazione del `storage.location.template` è fondamentale per garantire la corretta archiviazione e recupero dei dati.