Dicas Úteis para Usar o BigQuery sem Tomar Susto

Jéssica Costa
A Garota do TI
Published in
5 min readSep 5, 2023

O BigQuery é um daquelas ferramentas que você vai se deparar caso trabalhe com projetos de Análise/Ciência de dados na Google Cloud Platform(GCP). Para quem não conhece, o BigQuery, segundo o site do Google Cloud, é um armazenamento de dados corporativo totalmente gerenciado que ajuda a gerenciar e analisar dados com recursos integrados, como aprendizado de máquina, análise geoespacial e business intelligence. Mas como tudo na nuvem é pago e antes que você tome um susto com o valor das consultas que você fez (principalmente se a fatura do cartão for sua), vou dar umas dicas bem úteis.

Fonte: https://gifer.com/pt/PMEg

Para realizar algumas demonstrações aqui eu vou usar na GCP o ‘bigquery-public-data’, um dataset público disponível no BigQuery com muitas tabelas. Para isso eu vou usar as tabelas do ‘google trends’ e mostrar algumas coisas que você pode fazer e o que não deve fazer.

Usar as Guias do próprio BigQuery

Para começar vou usar o velho jargão de que informação é poder para que você antes de sair fazendo um select, examine a tabela. No BiqQuery isso é possível bastando clicar na tabela e olhar o esquema de dados (estrutura da tabela). A figura a seguir mostra a tabela international_top_rising_terms e gostaria que você se atentasse as três guias: Esquema, Detalhes e Visualizar.

A guia Esquema mostra todos os campos existentes, os tipos, se podem nulos, dentre outras informações. Queria destacar o aviso de tabela particionada que aparece acima das guias. Isso significa que em uma tabela particionada, os dados são armazenados em blocos físicos, cada um contendo uma partição de dados. E no que isso ajuda? Ajuda a definir quais blocos a consulta vai percorrer e não toda a tabela. Na guia Detalhes, você consegue ver exatamente qual campo particiona a tabela e mais informações úteis sobre a tabela, inclusive o tamanho dela.

Guia Detalhes

Já a guia Visualizar apresenta um overview dos dados contidos nessa tabela, ou seja, você não precisa fazer um select com limit para isso. O uso dessas guias é gratuito, então se você somente precisa examinar a estrutura da tabela, utilize desses recursos do próprio BigQuery. Só o uso dessas três guias já te dá uma boa base de informação da tabela.

Fazer consultas indicando a partição na cláusula Where

Eu sempre me pergunto para que uma pessoa precisa fazer uma consulta que retorna uma tabela inteira. São pouquíssimos casos que um histórico inteiro precisa ser analisado. Agora te dou mais um motivo para você não fazer isso: em uma tabela gigante, isso vai sair bem caro. Como o campo da partição dessa tabela é um DATE, é bem comum inclusive, a estrutura da cláusula WHERE pode ser feita da forma a seguir.

WHERE
refresh_date < "2023-09-04"
AND refresh_date >= "2023-09-01"

Mas e se a tabela não for particionada? Se for uma tabela pequena, não há um grande problema, mas se for uma tabela grande, temos um problema. O que recomendo é que particione a tabela, o BigQuery possui recursos e tutoriais para realizar essa tarefa.

Evitar usar o SELECT *

Sempre evite o uso do SELECT * pois em uma tabela com muitos campos isso significa que serão mais dados processados. Vamos observar a consulta abaixo e observar alguns itens.

Ao escrever a consulta, o BigQuery sempre indica a quantidade de dados processados na consulta, na consulta abaixo 1,47 GB. Enquanto eu não clicar em Executar, ela não custará nada. Não adianta parar a execução. Agora vejamos como vai ficar a consulta quando eu indico os campos no SELECT.

Você observa que a mesma com indicação dos campos que eu preciso já cai 870,99 MB de processamento. Isso já reduz o valor da consulta. Então a recomendação é sempre indicar os campos que você necessita.

Deixe o CACHE habilitado

Ao retornar os resultados, o BigQuery tem um recurso chamado CACHE (ele costuma vir habilitado). Na opção MAIS, Configurações da Consulta, Gerenciamento de Recursos, você consegue ver se ele está habilitado. Caso você execute esta mesma consulta, ela não vai custar nada por aproximadamente 24 horas. Caso você modifique a consulta, já será outra consulta, outro CACHE. Uma observação sobre o CACHE: se você indicar uma tabela de destino para os dados da consulta, ele não será habilitado.

Existem mais dicas para diminuir custos do BigQuery, mas para não tornar o texto muito longo e cansativo, coloquei quatro dicas específicas relacionadas a própria ferramenta. Mas quero destacar que otimizações realizadas na escrita da própria consulta SQL como filtros, agregações e uso correto de joins melhoram significativamente os custos. Vou deixar para outro post essa parte e ficam algumas referências da ferramenta para que vocês aprendam mais. Até mais!

--

--

Jéssica Costa
A Garota do TI

Mestre em Ciência da Computação, GDE em Machine Learning e Cientista de Dados