Comparación con pandas-gbq
La biblioteca pandas-gbq
ofrece una interfaz simple para ejecutar búsquedas y subir DataFrames de Pandas a BigQuery. Es un wrapper liviano que rodea la biblioteca cliente de BigQuery, google-cloud-bigquery
. Ambas bibliotecas se enfocan en ayudarte a realizar análisis de datos con SQL. En este tema, se ofrecen ejemplos de códigos que comparan google-cloud-bigquery
y pandas-gbq
.
Las diferencias clave en el nivel de funcionalidad y compatibilidad entre las dos bibliotecas incluyen lo siguiente:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Asistencia | Biblioteca de código abierto mantenida por PyData y contribuyentes voluntarios | Biblioteca de código abierto mantenida por Google |
Funcionalidad de la API de BigQuery cubierta | Ejecutar consultas y guardar datos de DataFrames de Pandas en tablas | Funcionalidad de la API de BigQuery completa con compatibilidad agregada para escritura y lectura de DataFrames de pandas y un Jupyter automático a fin de ejecutar consultas |
documentos/fuente | documentos/fuente |
Instala las bibliotecas
Para usar las muestras de código de esta guía, instala el paquete pandas-gbq
y las
bibliotecas cliente de Python de BigQuery.
PIP
Instala los paquetes pandas-gbq
y google-cloud-bigquery
.
pip install --upgrade pandas-gbq 'google-cloud-bigquery[bqstorage,pandas]'
Conda
Instala los paquetes Conda
pandas-gbq
y
google-cloud-bigquery
del canal conda-forge
administrado por la comunidad.
conda install -c conda-forge pandas-gbq google-cloud-bigquery
Ejecuta consultas
Ambas bibliotecas son compatibles con los datos de consultas almacenados en BigQuery. Las diferencias clave entre las bibliotecas incluyen lo siguiente:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Sintaxis de SQL predeterminada | GoogleSQL (configurable con pandas_gbq.context.dialect ) |
GoogleSQL |
Configuraciones de consulta | Enviado como diccionario en el formato especificado en la referencia de REST de BigQuery. | Usa la clase QueryJobConfig , que contiene propiedades para las distintas opciones de configuración de la API. |
Consulta datos con la sintaxis de GoogleSQL
En el siguiente ejemplo, se muestra cómo ejecutar una consulta de GoogleSQL con un proyecto o sin él. Para ambas bibliotecas, si un proyecto no está especificado, se determinará desde las credenciales predeterminadas.
pandas-gbq
:
google-cloud-bigquery
:
Consulta datos con la sintaxis de SQL heredado
En el siguiente ejemplo, se muestra cómo ejecutar una consulta con la sintaxis de SQL heredado. Consulta la Guía de migración de GoogleSQL para obtener orientación sobre cómo actualizar las consultas a GoogleSQL.
pandas-gbq
:
google-cloud-bigquery
:
Usa la API de BigQuery Storage para descargar resultados grandes
Usa la API de BigQuery Storage para acelerar descargas de resultados grandes entre 15 y 31 veces.
pandas-gbq
:
google-cloud-bigquery
:
Ejecuta una consulta con una configuración
Se requiere enviar una configuración con una consulta de la API de BigQuery a fin de realizar ciertas operaciones complejas, como ejecutar una consulta parametrizada o especificar una tabla de destino para almacenar los resultados de la consulta. En pandas-gbq
, la configuración se debe enviar como un diccionario en el formato que se especifica en la referencia de REST de BigQuery.
En google-cloud-bigquery
, se proporcionan las clases de configuración de trabajos, como QueryJobConfig
, que contiene las propiedades necesarias para configurar trabajos complejos.
En el siguiente ejemplo, se muestra cómo ejecutar una consulta mediante parámetros asignados.
pandas-gbq
:
google-cloud-bigquery
:
Carga un DataFrame de pandas a una tabla de BigQuery
Ambas bibliotecas son compatibles con la carga de datos desde DataFrame de pandas a una tabla nueva en BigQuery. Las diferencias clave incluyen lo siguiente:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Asistencia de tipo | Convierte el formato DataFrame en el formato CSV antes de enviarlo a la API, lo cual no es compatible con valores de arreglo o anidados. | Convierte el formato DataFrame en el formato Parquet o CSV antes de enviarlo a la API, que es compatible con los valores de arreglo y anidados. Elige Parquet para los valores de struct y de array, y CSV para la flexibilidad de serialización de fecha y hora. Parquet es la opción predeterminada. Ten en cuenta que, para cargar el DataFrame en una tabla, debes tener instalado pyarrow , que es el motor de Parquet que se usa para enviar los datos de DataFrame a la API de BigQuery. |
Configuraciones de carga | Enviado como diccionario en el formato especificado en la referencia de REST de BigQuery. | Usa la clase LoadJobConfig , que contiene propiedades para las distintas opciones de configuración de la API. |
pandas-gbq
:
google-cloud-bigquery
:
google-cloud-bigquery
requiere que la biblioteca pyarrow
serialize un DataFrame de Pandas en un archivo Parquet.
Instala el paquete pyarrow
:
conda install -c conda-forge pyarrow
o
pip install pyarrow
Funciones no compatibles con pandas-gbq
La biblioteca pandas-gbq
proporciona una interfaz útil para consultar datos y escribirlos en tablas, pero no abarca varias de las características de la API de BigQuery, como las siguientes:
- La administración de conjuntos de datos, que incluye la creación de conjuntos de datos nuevos, la actualización de las propiedades de los conjuntos de datos y la eliminación de conjuntos de datos
- Carga datos en BigQuery en formatos que no sean DataFrames de pandas
- La administración de tablas, que incluye la enumeración de las tablas de un conjunto de datos, la copia de datos de tablas y la eliminación de tablas
- La exportación de datos de BigQuery directamente a Cloud Storage