0Pricing
Cloud & IT Cert Prep · Lezione

Amazon Athena: SQL serverless su S3

Interrogare direttamente i dati S3 con SQL standard in Athena, ottimizzare con formati colonnari come Parquet e ORC e utilizzare le partizioni per controllare i costi

Amazon Athena: SQL serverless su S3 è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Che cos'è Amazon Athena

Amazon Athena è un servizio di query interattivo e serverless che consente di eseguire SQL standard direttamente sui dati archiviati in Amazon S3. Non è necessario effettuare il provisioning di server né gestire cluster e si paga solo per i dati analizzati da ogni query (circa 5 $ per TB analizzato). Athena utilizza Presto internamente e si integra nativamente con Glue Data Catalogue per i metadati delle tabelle.

Configurazione di Athena: workgroup e percorso di output

Prima di eseguire le query, configuri un Athena Workgroup e specifichi un percorso S3 per l'output dei risultati delle query. I workgroup consentono di separare la cronologia delle query e il monitoraggio dei costi tra i team, applicare la crittografia ai risultati e impostare limiti sui dati analizzati per query, così da evitare costi eccessivi. Ogni risultato della query viene scritto come file CSV nel bucket S3 di output configurato.

# Create a workgroup with an encrypted output location
aws athena create-work-group \
  --name analytics-team \
  --configuration '{
    "ResultConfiguration": {
      "OutputLocation": "s3://athena-results-123/analytics-team/",
      "EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
    },
    "EnforceWorkGroupConfiguration": true,
    "PublishCloudWatchMetricsEnabled": true,
    "BytesScannedCutoffPerQuery": 10737418240
  }'

Esecuzione della prima query

Indichi ad Athena un database di Glue Data Catalogue ed esegua SQL ANSI. Athena supporta SELECT, JOIN, GROUP BY, le funzioni finestra e le CTE. Può anche utilizzare CREATE TABLE AS SELECT (CTAS) per salvare i risultati della query come nuova tabella in formato Parquet, materializzando di fatto i risultati intermedi per velocizzare le query successive.

-- Query total sales by month from partitioned S3 data
SELECT
  year,
  month,
  SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;

-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;

Ottimizzazione dei costi: eliminazione delle partizioni non necessarie

Athena applica un costo per ogni TB di dati analizzato. La riduzione dei costi più efficace consiste nell'eliminazione delle partizioni non necessarie: includa sempre le colonne di partizione nella clausola WHERE. Se i dati sono partizionati per year/month/day, il filtro su queste colonne impedisce ad Athena di analizzare le altre partizioni. Senza un filtro sulle partizioni in una tabella su scala petabyte, una query semplice può costare centinaia di dollari.

-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';

-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';

Ottimizzazione dei costi: formato colonnare

Archiviare i dati in Apache Parquet o ORC anziché in CSV o JSON riduce drasticamente la quantità di dati analizzati da Athena per ogni query. Una query colonnare che utilizza 3 colonne su 50 analizza solo i dati su disco relativi a quelle 3 colonne. Grazie anche alla compressione integrata (Snappy, Zstd), i file Parquet sono in genere da 5 a 10 volte più piccoli dei file CSV equivalenti, moltiplicando il risparmio sui costi.

-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
--   query reads only 2 columns -> scans ~2 GB -> $0.01

-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;

Query federate con connettori per le origini dati

Athena Federated Query estende Athena oltre S3, consentendo di interrogare dati in RDS, DynamoDB, Redshift, Elasticsearch e origini personalizzate tramite connettori per le origini dati basati su Lambda. Distribuisca una funzione Lambda del connettore dal Serverless Application Repository, la registri come origine dati Athena e quindi esegua query tra tabelle S3 e database attivi in un'unica JOIN SQL, senza dover spostare prima alcun dato.

-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
  ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';

Integrazione di Athena con QuickSight

Amazon QuickSight si connette direttamente ad Athena come origine dati, consentendo agli analisti aziendali di creare dashboard interattive a partire dai dati S3 senza alcun database intermedio. QuickSight utilizza SPICE (Super-fast, Parallel, In-memory Calculation Engine) per memorizzare nella cache i risultati delle query Athena e visualizzare rapidamente le dashboard. Questo stack BI serverless (S3 + Glue + Athena + QuickSight) è un modello ricorrente negli esami per l'analisi dei dati a costi contenuti.

Ottimizzazione delle prestazioni delle query Athena

Oltre al partizionamento e al formato colonnare, ottimizzi ulteriormente le query Athena: suddivida i file di grandi dimensioni (punti a file da 128 MB a 1 GB per consentire l'elaborazione parallela), utilizzi il bucketing per le colonne unite frequentemente, eviti SELECT * e utilizzi funzioni di aggregazione approssimate come approx_distinct() e approx_percentile() quando non sono necessari valori esatti. Queste tecniche riducono sia i costi sia la latenza.

-- Use approx_distinct for fast cardinality estimate
SELECT
  year,
  approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;

Controllo degli accessi ad Athena

Athena si integra con IAM per il controllo degli accessi: gli utenti devono disporre delle autorizzazioni per eseguire query Athena (athena:StartQueryExecution), accedere al bucket S3 di output e leggere i dati S3 sottostanti. Per un accesso dettagliato a livello di colonna e riga, combini Athena con Lake Formation. Può inoltre limitare un workgroup a database specifici utilizzando chiavi di condizione IAM sull'ARN del workgroup.

# Minimum IAM policy for an Athena analyst
{
  "Effect": "Allow",
  "Action": [
    "athena:StartQueryExecution",
    "athena:GetQueryExecution",
    "athena:GetQueryResults",
    "athena:StopQueryExecution",
    "glue:GetDatabase",
    "glue:GetTable",
    "glue:GetPartitions",
    "s3:GetObject",
    "s3:PutObject"
  ],
  "Resource": "*"
}

Salvataggio dei risultati e query pianificate

I risultati delle query Athena vengono archiviati come file CSV in S3 e memorizzati nella cache per 7 giorni; pertanto, se si riesegue la stessa query in questo intervallo, i dati non vengono analizzati nuovamente. Per esigenze di reportistica ricorrenti, utilizzi le Athena Scheduled Queries per eseguire una query secondo una pianificazione cron e salvare i risultati in una nuova posizione S3 o direttamente in una tabella. In alternativa, attivi una query Athena da una macchina a stati Step Functions o da una regola EventBridge.

# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
  --query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
  --work-group analytics-team \
  --query 'QueryExecutionId' --output text)

# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_ID

Athena e Redshift: scegliere lo strumento giusto

Per l'esame SAA-C03, è importante sapere quando consigliare Athena anziché Redshift. Scelga Athena per query ad hoc e poco frequenti su S3, senza infrastruttura da gestire. Scelga Redshift quando sono necessari tempi di risposta inferiori al secondo per join complesse, quando un team di analisi dedicato esegue centinaia di query simultanee o quando desidera utilizzare Redshift Spectrum per estendere un data warehouse con dati S3. L'indicatore principale è la frequenza e la complessità delle query.

Verifica rapida

Verifichi la Sua comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che: Athena applica un costo per ogni TB analizzato, quindi l'eliminazione delle partizioni non necessarie e il formato Parquet sono essenziali per controllare i costi, Athena Federated Query estende SQL alle origini dati non S3 tramite connettori Lambda e Athena è ideale per le query ad hoc, mentre Redshift è adatto all'analisi con elevata concorrenza. Ora esploreremo Kinesis per lo streaming e l'analisi dei dati in tempo reale.

Domande Frequenti

La lezione «Amazon Athena: SQL serverless su S3» è gratuita?

Sì — il testo completo di «Amazon Athena: SQL serverless su S3» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Amazon Athena: SQL serverless su S3»?

Interrogare direttamente i dati S3 con SQL standard in Athena, ottimizzare con formati colonnari come Parquet e ORC e utilizzare le partizioni per controllare i costi Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Amazon Athena: SQL serverless su S3»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creare un data lake su S3
  2. AWS Glue: ETL e catalogo dei dati
  3. Amazon Athena: SQL serverless su S3
  4. Kinesis Streams, Firehose e analisi in tempo reale
← Torna a Cloud & IT Cert Prep