pandas-gbq
é um projeto conduzido pela comunidade pandas. A biblioteca de cliente do BigQuery, google-cloud-bigquery
, é a biblioteca oficial do Python para interagir com o BigQuery. Se você estiver usando a biblioteca pandas-gbq
, já está usando a biblioteca google-cloud-bigquery
. A biblioteca pandas-gbq
usa o google-cloud-bigquery
para fazer chamadas de API para o BigQuery. Ela fornece uma interface fácil do pandas para o BigQuery, mas não tem muitos dos recursos fornecidos pela biblioteca google-cloud-bigquery
.
Este tópico inclui detalhes sobre as alterações necessárias para atualizar seu código Python para usar google-cloud-bigquery
em vez de pandas-gbq
. Os exemplos de código neste tópico usam as seguintes versões das duas bibliotecas:
As principais diferenças no nível de funcionalidade e de suporte entre as duas bibliotecas incluem:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Suporte | Biblioteca de código aberto mantida pelo PyData e por colaboradores voluntários | Biblioteca de código aberto mantida pelo Google e por colaboradores voluntários |
Funcionalidade da API do BigQuery coberta | Limitado a executar consultas e salvar dados de DataFrames do pandas em tabelas | Funcionalidade completa da API do BigQuery, com suporte extra para ler/gravar DataFrames do pandas e um comando mágico do Jupyter para executar consultas |
Frequência de novos recursos | Novos recursos só são adicionados à biblioteca se forem implementados por colaboradores voluntários | Novos recursos são implementados à medida que são lançados na API do BigQuery |
documentos/origem | documentos/origem |
Executar consultas
Ambas as bibliotecas são compatíveis com a consulta de dados armazenados no BigQuery. As principais diferenças entre as bibliotecas incluem:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Sintaxe SQL padrão | SQL legado | SQL padrão |
Configurações de consulta | Enviado como dicionário no formato especificado na referência REST do BigQuery. | Usa a classe QueryJobConfig, que contém propriedades para as várias opções de configuração da API. |
Como consultar dados com a sintaxe SQL padrão
A amostra a seguir mostra como executar uma consulta SQL padrão tanto especificando explicitamente um projeto quanto sem especificá-lo. Em ambas as bibliotecas, se um projeto não for especificado, ele será determinado a partir das credenciais padrão.
pandas-gbq
:
google-cloud-bigquery
:
Como consultar dados com a sintaxe SQL legada
No exemplo a seguir, mostramos como executar uma consulta usando a sintaxe SQL legada. Veja o Guia de migração ao SQL padrão para orientação sobre como atualizar suas consultas para SQL padrão.
pandas-gbq
:
google-cloud-bigquery
:
Como executar uma consulta com uma configuração
O envio de uma configuração com uma solicitação da API do BigQuery é necessário para executar determinadas operações complexas, como executar uma consulta parametrizada ou especificar uma tabela de destino para armazenar os resultados da consulta. No pandas-gbq
, a configuração precisa ser enviada como um dicionário no formato especificado na referência REST do BigQuery.
No google-cloud-bigquery
, são fornecidas classes de configuração de jobs, como QueryJobConfig
, que contêm as propriedades necessárias para configurar jobs complexos.
A amostra a seguir mostra como executar uma consulta com parâmetros nomeados.
pandas-gbq
:
google-cloud-bigquery
:
Como carregar um DataFrame do pandas para uma tabela do BigQuery
Ambas as bibliotecas são compatíveis com o upload de dados de um DataFrame do pandas para uma nova tabela no BigQuery. As principais diferenças incluem:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Tipo de suporte | Converte o formato DataFrame para CSV antes de enviar para a API, que não é compatível com valores aninhados ou de matriz. | Converte o formato DataFrame para Parquet antes de enviar para a API, que é compatível com valores aninhados e de matriz. Observe que o pyarrow , que é o mecanismo parquet usado para enviar os dados do DataFrame para a API do BigQuery, precisa ser instalado para carregar o DataFrame em uma tabela. |
Carregar configurações | Enviado como dicionário no formato especificado na referência REST do BigQuery. | Use a classe LoadJobConfig , que contém propriedades para as várias opções de configuração da API. |
pandas-gbq
:
google-cloud-bigquery
:
google-cloud-bigquery
requer que a biblioteca pyarrow
serialize um DataFrame pandas em um arquivo Parquet.
Instale o pacote pyarrow
:
pip install pyarrow
ou
conda install -c conda-forge pyarrow
Recursos não compatíveis com o pandas-gbq
Embora a biblioteca pandas-gbq
forneça uma interface útil para consultar dados e gravar dados em tabelas, ela não abrange muitos recursos da API BigQuery, incluindo, entre outros:
- Como gerenciar conjuntos de dados, incluindo a criação de novos conjuntos de dados, a atualização de propriedades do conjunto de dados e a exclusão de conjuntos de dados
- Carregar dados no BigQuery de formatos diferentes do DataFrames do pandas
- Como gerenciar tabelas, incluindo listar tabelas em um conjunto de dados, copiar dados de tabelas e excluir tabelas
- Como exportar dados do BigQuery diretamente para o Cloud Storage