BigQuery: como acessar o BigQuery pelo Python
Não é nenhuma novidade que Python é uma das linguagens de programação mais influentes e populares no mundo.
Inclusive, ele tem uma história fascinante que reflete seu design centrado na legibilidade do código e na eficiência da pessoa desenvolvedora.
Seu objetivo principal é superar as limitações da linguagem ABC e oferecer uma sintaxe que enfatiza a clareza.
Neste artigo, vamos explorar as maravilhas de integrar o Python ao BigQuery, desvendando como essa poderosa combinação pode simplificar sua análise de dados e abrir novos horizontes para sua jornada de descoberta.
A linguagem Python se destaca particularmente por conta de sua sintaxe intuitiva e a vasta gama de bibliotecas de análise de dados, como NumPy, Pandas, Matplotlib e Scikit-learn.
Essas ferramentas fornecem as capacidades necessárias para lidar com tarefas complexas de forma eficiente, consolidando assim a posição do Python como escolha para processamento de dados, análise estatística e machine learning.
Se você é uma pessoa que deseja simplificar sua jornada no BigQuery, aproveite este artigo e descubra como o Python pode ser seu poderoso aliado. Boa leitura!
Como executar programas Python via Notebooks
Ao explorar o vasto universo da programação com Python, podemos encontrar diversas maneiras de escrever e executar nossos códigos. Entre essas opções, existem os Notebooks interativos, especialmente o Google Colab.
O Google Colab (Colaboratory) representa uma revolução no desenvolvimento e análise de dados com Python.
Trata-se de uma plataforma baseada em nuvem que permite a execução de código Python em células, facilitando a execução iterativa e a experimentação com dados em tempo real.
Essa abordagem modular é excepcionalmente benéfica para análises de dados, pois os usuários podem manipular dados e visualizar os resultados instantaneamente.
Além de suportar texto rico (usando Markdown), imagens, equações matemáticas e gráficos, o Colab está integrado ao Google Drive e outros serviços Google, oferecendo uma experiência de desenvolvimento colaborativo e acessível sem a necessidade de configuração local.
Como acessar dados do BigQuery
O acesso aos dados do BigQuery é possível tanto por meio de APIs, como também através de ferramentas disponíveis no ecossistema do Google.
Além disso, existem alternativas fora do ambiente de nuvem do Google que facilitam a visualização dos dados do BigQuery.
Quando optamos por acessar os dados do BigQuery utilizando um programa em Python, estamos nos aventurando em um acesso externo.
A questão que surge é: como estabelecer uma comunicação eficaz entre o programa e os dados do BigQuery, considerando que eles residem dentro do ecossistema Google — um ambiente altamente seguro e com restrições de acesso?
Isso é possível de ser realizado através de uma conta de serviço que deve ser configurada no Google Cloud. Para isso, você deve seguir os seguintes passos:
- No Google Cloud, acesse API / Credenciais.
- Clique na opção de gerenciar contas de serviço.
- Crie uma conta de serviço dando o papel de segurança ao usuário da nuvem de proprietário.
- Com a conta de serviço criada, clique em Gerenciar Chaves criando uma nova chave JSON.
Pronto! Configuração realizada.
Como acessar via Google Colab
Agora, vamos explorar o acesso via Google Colab com o Python. Para isso, proceda a inicialização dos parâmetros de segurança e de instalação da biblioteca de acesso.
- Acesse a página do Google Colab.
- Faça login com sua conta Google (a mesma usada para criar a conta de usuário na nuvem Google).
- Adicione uma célula ao seu notebook e Instale a biblioteca do google-cloud-bigquery:
!pip install google-cloud-bigquery --upgrade
- Reinicialize a seção quando o botão RESTART SESSION for exibido.
- Depois execute esses comandos abaixo para ativar a segurança da conta de serviço.
from google.colab import auth
auth.authenticate_user()
Ao executar este conjunto de comandos, a tela de Login do Google será mostrada. Entre com suas credenciais (as mesmas que acessam o BigQuery) e dê permissão para acesso a todas as opções apresentadas na tela.
Durante o acesso, você necessitará utilizar o ID do seu projeto e do seu conjunto de dados. Nos exemplos abaixo, o ID do projeto será curso-big-query-estudo-412200 e do conjunto de dados belleza_verde_vendas.
Listar conjunto de dados:
Para listar os conjuntos de dados, salve numa variável o identificador do projeto:
project_id = "curso-big-query-estudo-412200"
- Em uma outra célula implemente o programa de buscar a lista de conjunto de dados.
from google.cloud import bigquery
# Cria um cliente do BigQuery
client = bigquery.Client(project=project_id)
# Lista os conjuntos de dados no projeto especificado
datasets = list(client.list_datasets())
if datasets:
print("Conjuntos de dados em '{}':".format(project_id))
for dataset in datasets:
print("{}".format(dataset.dataset_id))
else:
print("O projeto '{}' não contém conjuntos de dados.".format(project_id))
Ao executar o programa acima os conjuntos de dados são exibidos.
Listar tabelas de um conjunto de dados:
Crie uma célula e execute:
from google.cloud import bigquery
# Cria um cliente do BigQuery
client = bigquery.Client(project=project_id)
- Depois, em outra célula, execute:
# Especifica o ID do conjunto de dados
dataset_id = f"{project_id}.belleza_verde_vendas"
# Obtém uma referência ao conjunto de dados
dataset_ref = client.dataset(dataset_id.split('.')[-1], project=dataset_id.split('.')[0])
# Lista as tabelas no conjunto de dados especificado
tables = client.list_tables(dataset_ref)
# Exibe os nomes das tabelas
print(f"Tabelas no conjunto de dados '{dataset_id}':")
for table in tables:
print(f"{table.table_id}")
Ao executar a lista de tabelas será exibida.
Listar estrutura de uma tabela:
Como você já tem a seção cliente criada, basta acrescentar o código abaixo em uma outra célula.
# Supondo que client já esteja inicializado e configurado com seu project_id
# Especifica o ID completo da tabela
table_id = f"{project_id}.belleza_verde_vendas.clientes"
# Obtém a tabela do BigQuery
table = client.get_table(table_id)
# Exibe a estrutura da tabela
print(f"Estrutura da tabela 'clientes':")
for schema_field in table.schema:
print(f"Nome: {schema_field.name}")
print(f"Tipo: {schema_field.field_type}")
print(f"Modo: {schema_field.mode}")
description = schema_field.description if schema_field.description else "Nenhuma descrição disponível"
print(f"Descrição: {description}")
print("-" * 40)
Listar dados de uma tabela:
Primeiro, obtenha uma referência à tabela
vendedores
no conjunto de dadosbelleza_verde_vendas
(ou outro conjunto de dados conforme apropriado para o seu caso).
# Inicialize a variavel com o nome da tabela
table_id = f"{project_id}.belleza_verde_vendas.vendedores"
# Obtém uma referência à tabela
table_ref = client.get_table(table_id)
- Em seguida, utilize o método
list_rows()
para recuperar os dados da tabela. Por padrão, este método pode retornar muitas linhas, por isso é prudente limitar o número de resultados para evitar o uso excessivo de recursos, especialmente se a tabela for grande.
Nesse caso específico, a tabela de vendedores não é grande, mas será mantido o parâmetro de limitação de linha no script abaixo.
# Lista as linhas da tabela (limitando os resultados)
rows = client.list_rows(table_ref, max_results=10)
# Exibe os dados
for row in rows:
print(row)
Executar uma consulta:
Primeiro, defina a consulta SQL que deseja executar:
query = """
SELECT id_cliente, nome
FROM `curso-big-query-estudo-412200.belleza_verde_vendas.clientes`
WHERE localizacao = 'Minas Gerais'
"""
- Utilize o cliente do BigQuery que você já autenticou e configurou com seu
project_id
para executar a consulta. Depois, recupere os resultados:
# Executa a consulta
query_job = client.query(query)
# Aguarda a consulta ser finalizada e recupera os resultados
results = query_job.result()
- Agora, percorra os resultados da consulta e exiba-os. Cada linha nos resultados pode ser acessada como um dicionário, onde as chaves são os nomes das colunas selecionadas:
print("Resultados da consulta:")
for row in results:
print(f"ID Cliente: {row['id_cliente']}, Nome: {row['nome']}")
- Apagando um conjunto de dados:
Para este exemplo, repita o processo de criar um conjunto de dados vazio no BigQuery Studio.
Agora, vamos apagá-lo:
- Para isso, adicione mais uma célula e digite:
# Especifica o ID do conjunto de dados a ser apagado
dataset_id = "belleza_verde_vendas_prod"
# Obtém uma referência ao conjunto de dados
dataset_ref = client.dataset(dataset_id)
try:
# Apaga o conjunto de dados
client.delete_dataset(dataset_ref, delete_contents=True, not_found_ok=False)
print(f"O conjunto de dados '{dataset_id}' foi apagado com sucesso.")
except Exception as e:
print(f"Erro ao apagar o conjunto de dados: {e}")
Conclusão
Acessar o BigQuery utilizando Python abre um vasto leque de possibilidades para as pessoas analistas de dados.
A integração entre Python e BigQuery, graças à biblioteca google-cloud-bigquery,
fornece uma base sólida para operações de dados complexas, análises e automação de processos de dados.
A capacidade de processar e analisar dados com a agilidade e a potência computacional do BigQuery, aliada à flexibilidade e à vasta gama de bibliotecas de análise de dados em Python, abre novos horizontes para a descoberta de insights, modelagem preditiva e tomada de decisão baseada em dados.
Encorajamos você a explorar ainda mais as funcionalidades disponíveis nesta conexão entre Python e BigQuery.
Mergulhar nas capacidades avançadas do BigQuery, como consultas analíticas, manipulação de grandes conjuntos de dados e integrações com outras ferramentas e serviços do Google Cloud.
Essas ações têm o potencial de ampliar significativamente o impacto dos seus projetos de dados, resultando em melhorias notáveis.
Por isso, convidamos você a explorar, experimentar e inovar com a união dessas tecnologias.
Aproveite as oportunidades que a conexão Python-BigQuery oferece para resolver problemas complexos de dados, criar soluções escaláveis e impulsionar o valor dos dados em seus projetos e organizações.
O caminho está aberto para que você descubra como essa poderosa ferramenta pode ser utilizada para atender às suas necessidades de dados e análises, levando seus projetos a novos patamares de eficiência e inovação.
Créditos
Criação Textual:
Produção técnica:
Produção didática:
Designer gráfico:
Apoio: