BigQuery: como acessar o BigQuery pelo Python

BigQuery: como acessar o BigQuery pelo Python
Victorino Vila
Victorino Vila

Compartilhe

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 promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

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:

Victorino Vila
Victorino Vila

Victorino, formado em Engenharia Elétrica pela PUC-RJ e mestre pela UFRJ, tem mais de 30 anos em gestão de consultorias de tecnologia. Sócio de startup de software para integração de dados, trabalha com MYSQL, SQL SERVER, POSTGRES, ORACLE, WEB SERVICES e .NET. Desde 2018, é professor na Alura, ensinando programação e bancos de dados.

Veja outros artigos sobre Data Science