Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites

Quando começei a trabalhar com AWS em 2021, nos meus estudos para a CCP via o S3 **como um Google Drive com **capacidade infinita (obviamente tinha uma visão beemm limitada de um cara que vinha de router bgp em Cisco). Contudo tenho notado que nos últi…


This content originally appeared on DEV Community and was authored by Thiago Marques

Quando começei a trabalhar com AWS em 2021, nos meus estudos para a CCP via o S3 **como um Google Drive com **capacidade infinita (obviamente tinha uma visão beemm limitada de um cara que vinha de router bgp em Cisco). Contudo tenho notado que nos últimos anos, o S3 se consolidou como a espinha dorsal dos Data Lakes modernos na AWS, com cada vez mais funções e inovações.

Praticamente todo projeto de dados na AWS começa por lá: armazenando logs, relatórios financeiros, eventos de aplicações ou mesmo datasets públicos. Na prática ele deixou de ser um repositório passivo e virou o ponto de partida da inteligência de dados na nuvem.

O desafio agora não é mais guardar dados, e sim extrair valor deles sem clusters caros ou ETLs pesados.

É aí que entra o Amazon Athena. Lançado em 2016, como um serviço serverless de consultas SQL sobre o S3. Com ele, você não provisiona servidores, não paga por nós ociosos e obviamente não precisa configurar instâncias: apenas descreve o schema (e por traz ele usa o Glue Data Catalog) e consulta via SQL.

Nesse blog post quero mostrar como o Athena faz as queries no S3, como podemos deixar essa queries mais baratas e mais rápidas, e também quando utilizar esse combo é uma vantagem.

Cenário de estudo

Vamos usar um caso prático: temos um arquivo CSV com dados de filmes do IMDb armazenado no S3 com cerca de 10 MB, contendo colunas como título, ano, gênero e avaliação.

A ideia é analisar esses dados diretamente no S3 usando o Athena, sem precisar criar um banco de dados. Queremos responder perguntas como:

  • “Quais são os filmes mais bem avaliados por gênero?”
  • “Quantos filmes foram lançados por década?”

No começo, as consultas funcionam, mas são lentas e caras (o Athena precisa ler todo o CSV a cada execução). Então para resolver isso, aplicamos CTAS (Create Table As Select), convertendo o CSV para Parquet e criando partições por ano de lançamento, e assim reduzir tempo e custo.

Nosso objetivo: comparar a diferença entre consultar o CSV bruto e a versão otimizada em Parquet, analisando tempo de execução, volume de dados escaneado e custo em dólar.

Arquitetura por trás do Athena

Ok, o Athena além de ter um nome fanstástico foi algo totalmente revolucionário? A resposta direta: Não. Em resumo, ele funciona como a ponte entre o S3, onde os dados vivem, e as ferramentas que precisam deles.

Junto com ele tem o todo poderoso AWS Glue Data Catalog: que descreve o conteúdo, como se fose um mapa para o dataset (palavra bonita para o .csv), na prática ele é que vai dar significado ao .csv.

Ai temos o Presto (motor interno (Trino)): que é quem realmente executa as consultas em paralelo, lendo os arquivos diretamente do S3.

Visualmente, a arquitetura pode ser imaginada assim: o S3 armazena os dados (CSV, JSON, Parquet), o Glue Catalog descreve como esses dados estão estruturados, o Athena (Presto) executa as queries em workers temporários, e os resultados podem ser enviados para QuickSight, Redshift ou devolvidos ao S3.

Mão na massa: dataset do IMDb

Para entender na prática como o Athena trabalha, vamos usar um dataset real: baixei a base de filmes do IMDb e subi em um bucket no S3, a base possui filmes com informações como título, ano de lançamento, nota e país.

Nosso objetivo será analisar quantos filmes foram lançados por ano nas décadas de 1980 e 1990, comparando a execução entre uma base CSV e uma versão otimizada em Parquet com particionamento por ano.

  1. Criando a tabela no Athena (CSV original no S3)
CREATE EXTERNAL TABLE IF NOT EXISTS imdb_movies (
    id STRING,
    title STRING,
    link STRING,
    year INT,
    duration STRING,
    rating_mpa STRING,
    rating_imdb STRING,
    vote STRING,
    budget STRING,
    gross_world_wide STRING,
    gross_us_canada STRING,
    gross_opening_weekend STRING,
    director STRING,
    writer STRING,
    star STRING,
    genre STRING,
    country_origin STRING,
    filming_location STRING,
    production_company STRING,
    language STRING,
    win STRING,
    nomination STRING,
    oscar STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
  'separatorChar' = ',',
  'quoteChar' = '"'
)
LOCATION 's3://datanews-user-event/input/' 
TBLPROPERTIES ('skip.header.line.count'='1');

Esse comando informa ao Athena:

  • Onde estão os dados (LOCATION);
  • Que o formato é CSV (SERDE);
  • E quais colunas existem no arquivo.
  1. Consultando quantos filmes foram lançados por ano (anos 80 e 90)

Agora podemos fazer a primeira consulta, (aqui ainda sem sem otimização).
Essa query irá contar quantos filmes existem por ano entre 1980 e 1999.

SELECT year, COUNT(*) AS total_filmes
FROM movies_csv
WHERE year BETWEEN 1980 AND 1999
GROUP BY year
ORDER BY year;

💡 Aqui o Athena vai ler o CSV inteiro, mesmo que a maioria dos registros não esteja dentro do período desejado.
Isso significa mais dados escaneados, mais tempo e mais custo.

  1. Criando a tabela otimizada em Parquet com CTAS (filmes entre 80 e 90) Para melhorar a performance, vamos criar uma nova tabela em formato Parquet e particionada por ano. Usaremos o comando CTAS (Create Table As Select), que lê o dataset original, filtra os dados desejados e grava uma nova versão da tabela já otimizada no S3.
CREATE TABLE imdb_movies_80_90
WITH (
    format = 'PARQUET',
    external_location = 's3://datanews-user-event/ctas/',
    partitioned_by = ARRAY['year'],
    parquet_compression = 'SNAPPY'
) AS
SELECT
    id,
    title,
    director,
    year
FROM
    movies_csv
WHERE year BETWEEN 1980 AND 1999

O Athena criará automaticamente subpastas no S3 como:
s3://datanews-user-event/ctas/year=1980/
s3://datanews-user-event/ctas/year=1981/
...
s3://datanews-user-event/ctas/year=1999/

Cada partição conterá apenas os filmes daquele ano.

  1. Consultando novamente a base otimizada Agora, basta rodar a mesma query de antes, mas sobre a nova tabela particionada:
SELECT year, COUNT(*) AS total_filmes
FROM imdb_movies_80_90
GROUP BY year
ORDER BY year;

O Athena agora só lê as partições necessárias (anos 80 e 90), em formato colunar e comprimido, em vez de varrer o CSV inteiro.
Isso pode reduzir o volume escaneado em até 90% e o tempo de execução em 3 a 5 vezes, dependendo do tamanho do dataset.

Resultado? O mesmo conjunto de dados, mas agora com consultas até 90% mais baratas e 3x mais rápidas.
O que muda não é o dado, é o formato e a forma como o Athena o lê.
Esse é o ponto em que o S3 deixa de ser apenas armazenamento e passa a ser plataforma de análise.

Comparações com outras soluções

Mas apenas o Athena consegue ler dados do S3? Não. Ele é muito bom para consultas ad-hoc (imagine o ad-hoc como um uber, ou seja, você solicita só quando precisa) e analises sob demanda, mas não é a escolha ideal para todos os cenários.

O Redshift Spectrum, por exemplo, também consultas dados no S3, mas depende de um cluster RedShift ativo, e é mais indicado para quem usa um data warehouse e quer estender o alcance das consultas.

O Amazon EMR, com Spark e Hive, é voltado a pipelines complexos e ETL massivos, também vai conseguir ler o S3, é mais fléxivel e muito mais poderoso, contudo exige uma manutenção e configuração mais pesada.

Custos e casos de uso

O Athena te cobra $5 por terrabyte escaneado proporcionalmente, ou seja, uma query que lê 1GB custa aproximadamente $0,005.

Simplicidade sedutora, posso dizer, mas perigosa.
Em números práticos, imagine um CloudTrail com 450GB de logs, que precisam ser analisados uma vez por semana:

  • CSV: 450 GB lidos × $5/TB = ~$9 por execução
  • Parquet: 110 GB lidos × $5/TB = ~$2.25

Essa diferença se repete toda semana, em um ano, são mais de $350 de economia só por mudar o formato.

Então utilize o Athena para contextos onde precisa da informação rápida ou quer manter a infra totalmente serveless. Exemplos:

  • BI e dashboards: junto com o QuickSight, gera relatórios em tempo real sem precisar mover dados.
  • Logs e auditoria: usado por equipes de segurança/redes para consultar CloudTrail, VPC Flow Logs e ALB Logs.
  • Data Lakes serverless: combinação de Glue + Athena + S3, criando um ecossistema de análise totalmente sem servidor.

Pontos importantes:

  • Cada query pode rodar no máximo por 30 minutos;
  • Os resultados (download) é limitado em 100MB (maiores só mandar para o S3 e fazer o download por lá);
  • Tem um soft-limit de 20 queries simultâneas por conta/região;

Bonus

  • quando NÃO utilizar o Athena:
    Quando não usar o Athena:

  • Quando você precisa de queries complexas com muitos joins e aggregations;

  • Quando os dados precisam de atualizações frequentes (Athena é leitura, não transação);

  • Ou quando o custo por leitura começa a se igualar ao de um Redshift mantido ativo.

No fim, essa é a mentalidade por trás da nuvem moderna:
trazer a análise para os dados, e não os dados para a análise.
É o que faz o Athena ser tão poderoso — ele não é apenas uma ferramenta de consulta, mas um lembrete de que inteligência começa quando paramos de mover informação e começamos a escutá-la onde ela vive.

revisado por: Elisa Livramento


This content originally appeared on DEV Community and was authored by Thiago Marques


Print Share Comment Cite Upload Translate Updates
APA

Thiago Marques | Sciencx (2025-10-17T14:59:44+00:00) Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites. Retrieved from https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/

MLA
" » Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites." Thiago Marques | Sciencx - Friday October 17, 2025, https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/
HARVARD
Thiago Marques | Sciencx Friday October 17, 2025 » Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites., viewed ,<https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/>
VANCOUVER
Thiago Marques | Sciencx - » Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/
CHICAGO
" » Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites." Thiago Marques | Sciencx - Accessed . https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/
IEEE
" » Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites." Thiago Marques | Sciencx [Online]. Available: https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/. [Accessed: ]
rf:citation
» Amazon Athena: análises SQL diretas no S3 – quando usar, quanto custa e quais os limites | Thiago Marques | Sciencx | https://www.scien.cx/2025/10/17/amazon-athena-analises-sql-diretas-no-s3-quando-usar-quanto-custa-e-quais-os-limites/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.