Comparaison avec pandas-gbq
La bibliothèque pandas-gbq
fournit une interface simple pour exécuter des requêtes et importer des objets DataFrame pandas dans BigQuery. Il s'agit d'un wrapper de bas niveau autour de la bibliothèque cliente BigQuery, google-cloud-bigquery
. Ces deux bibliothèques ont pour objectif de vous aider à effectuer des analyses de données à l'aide de SQL. Cette rubrique fournit des exemples de code comparant google-cloud-bigquery
et pandas-gbq
.
Les principales différences qui existent en termes de fonctionnalités et d'assistance entre les deux bibliothèques sont décrites ci-dessous.
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Assistance | Bibliothèque Open Source gérée par PyData et des contributeurs bénévoles | Bibliothèque Open Source gérée par Google |
Fonctionnalités de l'API BigQuery fournies | Exécution de requêtes et enregistrement des données des objets DataFrame pandas dans des tables | Fonctionnalités complètes de l'API BigQuery avec la possibilité d'effectuer des opérations de lecture/écriture sur les objets DataFrame pandas et d'utiliser une commande magique Jupyter pour l'exécution des requêtes. |
docs/source | docs/source |
Installer les bibliothèques
Pour utiliser les exemples de code figurant dans ce guide, installez le package pandas-gbq
et les bibliothèques clientes BigQuery pour Python.
PIP
Installez les packages pandas-gbq
et google-cloud-bigquery
.
pip install --upgrade pandas-gbq 'google-cloud-bigquery[bqstorage,pandas]'
Conda
Installez les packages Conda pandas-gbq
et google-cloud-bigquery
à partir du canal conda-forge
exploité par la communauté.
conda install -c conda-forge pandas-gbq google-cloud-bigquery
Exécuter des requêtes
Les deux bibliothèques permettent d'interroger les données stockées dans BigQuery. Les principales différences qui les distinguent sont présentées ci-dessous.
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Syntaxe SQL par défaut | GoogleSQL (configurable avec pandas_gbq.context.dialect ) |
GoogleSQL |
Configurations de requêtes | Envoyées sous forme de dictionnaire au format spécifié dans la documentation de référence de l'API REST BigQuery. | Possibilité d'utiliser la classe QueryJobConfig , qui contient les propriétés des différentes options de configuration de l'API. |
Interroger des données avec une syntaxe en GoogleSQL
L'exemple ci-dessous montre comment exécuter une requête GoogleSQL en indiquant de façon explicite un projet ou sans le spécifier. Pour les deux bibliothèques, si vous ne spécifiez aucun projet, il sera déterminé à partir des identifiants par défaut.
pandas-gbq
:
google-cloud-bigquery
:
Interroger des données avec une syntaxe en ancien SQL
L'exemple ci-dessous montre comment exécuter une requête à l'aide d'une syntaxe en ancien SQL. Consultez le guide de migration vers le langage GoogleSQL pour savoir comment mettre à jour vos requêtes en GoogleSQL.
pandas-gbq
:
google-cloud-bigquery
:
Télécharger des résultats volumineux à l'aide de l'API BigQuery Storage
L'API BigQuery Storage vous permet de multiplier la vitesse de téléchargement des résultats volumineux par 15 à 31.
pandas-gbq
:
google-cloud-bigquery
:
Exécuter une requête avec une configuration
L'envoi d'une configuration avec une requête d'API BigQuery est nécessaire pour effectuer certaines opérations complexes, telles que l'exécution d'une requête paramétrée ou la spécification d'une table de destination permettant de stocker les résultats de requête. Dans pandas-gbq
, la configuration doit être envoyée sous forme de dictionnaire au format spécifié dans la documentation de référence REST de BigQuery.
google-cloud-bigquery
fournit des classes de configuration de tâche telles que QueryJobConfig
, qui contiennent les propriétés nécessaires à la configuration de tâches complexes.
L'exemple ci-dessous montre comment exécuter une requête avec des paramètres nommés.
pandas-gbq
:
google-cloud-bigquery
:
Charger un objet DataFrame pandas dans une table BigQuery
Les deux bibliothèques permettent d'importer les données d'un objet DataFrame pandas dans une nouvelle table BigQuery. Les principales différences qui les distinguent sont décrites ci-dessous.
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Formats compatibles | Convertit l'objet DataFrame au format CSV avant de l'envoyer à l'API, qui n'accepte pas les valeurs imbriquées ou de tableau. | Convertit l'objet DataFrame au format Parquet ou CSV avant de l'envoyer à l'API, qui accepte les valeurs imbriquées ou de tableau. Choisissez Parquet pour les valeurs de structure et de tableau, et CSV pour la flexibilité de sérialisation des dates et heures. Parquet est le choix par défaut. Notez que pyarrow , qui est le moteur Parquet utilisé pour envoyer les données DataFrame à l'API BigQuery, doit être installé pour permettre le chargement de l'objet DataFrame dans une table. |
Configurations de chargement | Envoyées sous forme de dictionnaire au format spécifié dans la documentation de référence de l'API REST BigQuery. | Possibilité d'utiliser la classe LoadJobConfig , qui contient les propriétés des différentes options de configuration de l'API. |
pandas-gbq
:
google-cloud-bigquery
:
google-cloud-bigquery
nécessite la bibliothèque pyarrow
pour sérialiser un objet DataFrame pandas en fichier Parquet.
Installez le package pyarrow
:
conda install -c conda-forge pyarrow
ou
pip install pyarrow
Fonctionnalités non disponibles avec pandas-gbq
Même si la bibliothèque pandas-gbq
fournit une interface utile pour interroger et écrire des données dans des tables, il lui manque de nombreuses fonctionnalités offertes par l'API BigQuery, parmi lesquelles :
- Gestion des ensembles de données, ce qui consiste entre autres à créer des ensembles de données, à mettre à jour les propriétés associées et à supprimer des ensembles de données
- Chargement des données dans BigQuery à partir de formats autres que les objets DataFrame pandas
- Gestion des tables, ce qui consiste entre autres à répertorier les tables d'un ensemble de données, à copier les données des tables et à supprimer des tables
- Exportation des données BigQuery directement vers Cloud Storage