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 dados belleza_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}")
  
Banner da Escola de Data Science: Matricula-se na escola de Data Science. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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:

Veja outros artigos sobre Data Science