Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Fase 2: creare una tabella

Modalità Focus
Fase 2: creare una tabella - Amazon Athena

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

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

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 valori separati da tabulazioni (TSV), 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 una CREATE EXTERNAL TABLE dichiarazione semplice 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, viene eliminata con caratteri backtick (`). ROW FORMAT DELIMITEDsignifica che Athena utilizzerà una libreria predefinita chiamata LazySimpleSerDeper 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 disponi di dati personalizzati separati da tabulazioni o virgole, puoi utilizzare un'CREATE TABLEistruzione come nell'esempio appena presentato, purché i campi non contengano informazioni annidate. 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 ClientInfo finale:

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'CREATE TABLEistruzione di esempio appena presentata specifica le tabulazioni come delimitatori di campo, non è possibile suddividere i componenti separati all'interno del ClientInfo campo in colonne separate. Pertanto, è necessaria una nuova CREATE TABLE dichiarazione.

Per creare colonne dai valori all'interno del ClientInfo campo, puoi usare un'espressione regolare (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 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 creare tabelle a partire da TSV dati complessi CSV o complessi, ma possono essere difficili da scrivere e gestire. Fortunatamente, ci sono altre librerie che puoi usare per formati come JSON Parquet eORC. Per ulteriori informazioni, consulta Scegli un file SerDe per i tuoi dati.

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.

  2. 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.
  3. Scegli il segno più (+) 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.
  4. 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.
  5. 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

    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/';
  6. Nell'LOCATIONistruzione, sostituitela myregion con quella Regione AWS che state utilizzando attualmente (ad esempio,us-west-1).

  7. Seleziona Esegui.

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

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.