

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

# Eseguire query sul formato dei file di log W3C extended
<a name="querying-iis-logs-w3c-extended-log-file-format"></a>

Il formato dei dati del file di log [W3C extended](https://docs.microsoft.com/en-us/windows/win32/http/w3c-logging) presenta campi separati da spazi. I campi visualizzati nei log W3C extended sono determinati da un amministratore del server Web che sceglie quali campi di log includere. Nell'esempio seguente i dati di log contengono i campi `date, time`, `c-ip`, `s-ip`, `cs-method`, `cs-uri-stem`, `sc-status`, `sc-bytes`, `cs-bytes`, `time-taken` e `cs-version`.

```
2020-01-19 22:48:39 203.0.113.5 198.51.100.2 GET /default.html 200 540 524 157 HTTP/1.0
2020-01-19 22:49:40 203.0.113.10 198.51.100.12 GET /index.html 200 420 324 164 HTTP/1.0
2020-01-19 22:50:12 203.0.113.12 198.51.100.4 GET /image.gif 200 324 320 358 HTTP/1.0
2020-01-19 22:51:44 203.0.113.15 198.51.100.16 GET /faq.html 200 330 324 288 HTTP/1.0
```

## Creare una tabella in Athena per i log W3C extended
<a name="querying-iis-logs-creating-a-table-in-athena-for-w3c-extended-logs"></a>

Prima di poter eseguire una query sui W3C extended, è necessario creare uno schema di tabella in modo che Athena possa leggere i dati del log.

**Per creare una tabella in Athena per i log W3C extended**

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

1. Incollare un'istruzione DDL come la seguente nella console Athena, osservando i seguenti punti:

   1. Aggiungere o rimuovere le colonne dell'esempio in modo che corrispondano ai campi dei log per cui si desidera eseguire la query.

   1. I nomi delle colonna nel formato di file di log W3C Extended contengono trattini (`-`). Tuttavia, in conformità con le [convenzioni di denominazione di Athena](tables-databases-columns-names.md), l'esempio di istruzione `CREATE TABLE` li sostituisce con trattini bassi (`_`).

   1. Per specificare uno spazio come separatore, utilizzare `FIELDS TERMINATED BY ' '`.

   1. Modificare i valori in `LOCATION 's3://amzn-s3-demo-bucket/w3c-log-folder/'` per puntare ai log W3C extended in Amazon S3.

   ```
   CREATE EXTERNAL TABLE `iis_w3c_logs`( 
     date_col string, 
     time_col string, 
     c_ip string,
     s_ip string,
     cs_method string, 
     cs_uri_stem string, 
     sc_status string,
     sc_bytes string,
     cs_bytes string,
     time_taken string,
     cs_version string
     ) 
   ROW FORMAT DELIMITED  
     FIELDS TERMINATED BY ' '  
   STORED AS INPUTFORMAT  
     'org.apache.hadoop.mapred.TextInputFormat'  
   OUTPUTFORMAT  
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
   LOCATION   's3://amzn-s3-demo-bucket/w3c-log-folder/'
   ```

1. Eseguire la query nella console Athena per registrare la tabella `iis_w3c_logs`. Al termine della query, i registri sono pronti per le query da Athena.

## Esempio di query di selezione dei log W3C Extended
<a name="querying-iis-logs-example-w3c-extended-log-select-query"></a>

Il seguente esempio di query seleziona la data, l'ora, la destinazione della richiesta e il tempo impiegato dalla tabella `iis_w3c_logs`. La clausola `WHERE` filtra per casi in cui il metodo HTTP è `GET` e il codice di stato HTTP è `200` (riuscito).

```
SELECT date_col, time_col, cs_uri_stem, time_taken
FROM iis_w3c_logs
WHERE cs_method = 'GET' AND sc_status = '200'
```

L'immagine seguente mostra i risultati della query nell'editor di query Athena.

![\[Esempio di risultati delle query in Athena dei file di log W3C Extended archiviati in Amazon S3.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-1.png)


## Combinare i campi data e ora
<a name="querying-iis-logs-example-w3c-extended-log-combining-date-and-time"></a>

I campi `date` e `time` delimitati da spazio sono voci separate nei dati di origine del log, ma è possibile combinarle in una marca temporale se lo si desidera. Usa le funzioni [concat()](https://prestodb.io/docs/current/functions/string.html#concat) e [date\$1parse()](https://prestodb.io/docs/current/functions/datetime.html#date_parse) in una query [SELECT](select.md) o [CREATE TABLE AS SELECT](create-table-as.md) per concatenare e convertire le colonne di data e ora in formato marca temporale. Nell'esempio seguente viene utilizzata una query CTAS per creare una nuova tabella con una colonna `derived_timestamp`.

```
CREATE TABLE iis_w3c_logs_w_timestamp AS
SELECT 
  date_parse(concat(date_col,' ', time_col),'%Y-%m-%d %H:%i:%s') as derived_timestamp, 
  c_ip, 
  s_ip, 
  cs_method, 
  cs_uri_stem, 
  sc_status, 
  sc_bytes, 
  cs_bytes, 
  time_taken, 
  cs_version
FROM iis_w3c_logs
```

Dopo aver creato la tabella, è possibile eseguire query direttamente sulla nuova colonna della marca temporale, come nell'esempio seguente.

```
SELECT derived_timestamp, cs_uri_stem, time_taken
FROM iis_w3c_logs_w_timestamp
WHERE cs_method = 'GET' AND sc_status = '200'
```

L'immagine seguente mostra i risultati della query.

![\[Risultati delle query del file di log W3C Extended su una tabella con una colonna di marca temporale derivata.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-1a.png)
