BigQuery
O BigQuery é o um serviço de banco de dados em nuvem da Google. Você faz consultas ao banco em SQL direto do navegador com:
- Rapidez: Mesmo queries muito longas demoram apenas minutos para serem processadas.
- Escala: O BigQuery escala magicamente para hexabytes se necessário.
Custo do Big Query (BQ)
A principal cobrança do Big Query ocorre em função do volume de dados processados. Cada consulta de SQL tem um custo de processamento associado ao volume de dados e as operações de manipulação realizadas.
Dicas para reduzir o custo de uma query no GCP
Antes de tudo, vamos entender onde visualizar o custo de processamento. Ao utilizar a ferramenta de consulta do BQ, o custo de processamento estimado é apresentado no canto inferior da tela. Na imagem abaixo, note o campo destacado em vermelho:

Para executar a consulta SELECT * FROM datahub-igarape.validada_br_cpt_conflito.conflito_terra_agua o BQ estima o custo de 2,49MB de processamento. É muito importante que os usuários do Datahub fiquem atentos a previsão de custos, sobretudo ao executar consultas complexas com diversas tabelas e operações.
Vamos para as dicas!
1 - Evite SELECT *
Para contornar o uso do SELECT * você pode:
- Escrever apenas os nomes das colunas que deseja como retorno.
Ex:
SELECT municipio, nome_agencia FROM datahub-igarape.validada_br_correio_agencia.agencia -
Excluir algumas colunas com o uso do
EXCEPT. Ex:SELECT * EXCEPT(cep, endereco) FROM datahub-igarape.validada_br_correio_agencia.agencia -
Prática recomendada: selecione somente as colunas de interesse para reduzir o custo final da consulta.
2 - Espiar como são os dados
Evite fazer consultas com SELECT * para visualizar uma amostra dos dados. Você pode fazer isso usando a feature de pré visualização nativa do Big Query, sem incorrer em custos de processamento:
Basta selecionar uma tabela e depois selecionar a aba "Visualização ou Preview" para visualizar algumas linhas dessa tabela.

3 - Filtrar a partição
-
As partições são divisões feitas em uma tabela para facilitar o gerenciamento e a consulta dos dados. No momento de execução da consulta, o Big Query ignora linhas que possuem um valor da partição diferente do utilizado no filtro. Isto normalmente reduz significativamente a quantidade de linhas lidas e, o que nos interessa, reduz o custo de processamento.
-
Clusters são agrupamentos organizados em uma tabela com base nos valores de uma ou mais colunas especificadas. Durante a execução de uma consulta, o BigQuery otimiza a leitura dos dados, acessando apenas os segmentos que contêm os valores relevantes das colunas de cluster. Isso significa que, ao invés de escanear toda a tabela, apenas as partes necessárias são lidas, o que geralmente reduz a quantidade de dados processados e, consequentemente, reduz o custo de processamento.
Se a tabela for particionada, opte por filtrá-la utilizando a coluna de partição. Você pode descobrir se a tabela é particionada seguindo o mesmo passo anterior, mas selecionando a aba "Detalhes" e procurando o termo “Particionada“.

Então lembre-se: sempre use a coluna de partição quando sua tabela permitir 😉!
4 - Muita atenção com operações de Joins de Tabelas
-
Via de regra, tente reduzir a quantidade de dados das tabelas antes de uma cláusula JOIN. Quanto antes reduzirmos a quantidade de dados, menos processamento iremos exigir.
-
Avalie a real necessidade do JOIN
-
Certifique-se de que o join é realmente necessário para a análise que você está realizando. Às vezes, operações alternativas como subconsultas ou agregações podem ser mais eficientes.
-
Entenda a Lógica do JOIN
- Diferentes tipos de joins (INNER, LEFT, RIGHT, FULL) têm diferentes implicações de desempenho e resultado. Gastar um tempinho entendo a melhor opção para seu objetivo de análise pode ajudar a ter um controle de custos mais eficiente.
- Um dos problemas mais comuns é a multiplicação de linhas indesejadas no resultado final.
-
Para entender a fundo boas práticas e problemas recorrentes com joins sugerimos os guias SQL Joins na prática e Maximizando a Eficiência com JOIN em Consultas SQL para Combinar Tabelas
-
Utilize as dicas anteriores
- Selecione somente colunas de interesse
- Faça uso das colunas particionadas para filtrar os dados
- Atente-se a estimativa de custos antes de executar a consulta
Referências
Manuais e Cursos de SQL
Está começando a aprender sobre SQL para fazer suas consultas? Abaixo colocamos algumas recomendações usadas pela nossa equipe tanto no aprendizado quanto no dia-a-dia: