Vergleich mit pandas-gbq
Die pandas-gbq
-Bibliothek bietet eine einfache Schnittstelle zum Ausführen von Abfragen und zum Hochladen von pandas-Dataframes in BigQuery. Es ist ein dünner Wrapper für die BigQuery-Clientbibliothek google-cloud-bigquery
. Beide Bibliotheken unterstützen Sie bei der Datenanalyse mit SQL. Dieses Thema enthält Codebeispiele zum Vergleich von google-cloud-bigquery
und pandas-gbq
.
Die wichtigsten Unterschiede in Bezug auf Funktionalität und Support zwischen den beiden Bibliotheken sind:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Support | Open-Source-Bibliothek, die von PyData und freiwilligen Contributors verwaltet wird | Open-Source-Bibliothek, die von Google verwaltet wird |
Abgedeckte BigQuery API-Funktionalität | Abfragen ausführen und Daten aus pandas DataFrames in Tabellen speichern | Umfassende BigQuery API-Funktionalität mit zusätzlicher Unterstützung für das Lesen/Schreiben von pandas-DataFrames und einer Jupyter-Magic zum Ausführen von Abfragen |
Dokumentation/Quellcode | Dokumentation/Quellcode |
Bibliotheken installieren
Um die Codebeispiele in diesem Leitfaden zu verwenden, installieren Sie das Paket pandas-gbq
und die BigQuery-Python-Clientbibliotheken.
PIP
Installieren Sie die Pakete pandas-gbq
und google-cloud-bigquery
.
pip install --upgrade pandas-gbq 'google-cloud-bigquery[bqstorage,pandas]'
Conda
Installieren Sie die Conda-Pakete pandas-gbq
und google-cloud-bigquery
aus dem Community-Kanal conda-forge
.
conda install -c conda-forge pandas-gbq google-cloud-bigquery
Abfragen ausführen
Beide Bibliotheken unterstützen das Abfragen von in BigQuery gespeicherten Daten. Die wichtigsten Unterschiede zwischen den Bibliotheken sind:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Standardmäßige SQL-Syntax | GoogleSQL (konfigurierbar mit pandas_gbq.context.dialect ) |
GoogleSQL |
Abfragekonfiguration | Wird als Wörterbuch in dem in der BigQuery-REST-Referenz angegebenen Format gesendet | Verwendet die Klasse QueryJobConfig . Sie enthält Attribute für die verschiedenen API-Konfigurationsoptionen. |
Daten mit der GoogleSQL-Syntax abfragen
Im folgenden Beispiel wird gezeigt, wie eine GoogleSQL-Abfrage mit und ohne explizite Angabe eines Projekts ausgeführt wird. Falls kein Projekt angegeben ist, wird das Projekt in beiden Bibliotheken anhand der Standardanmeldedaten ermittelt.
pandas-gbq
:
google-cloud-bigquery
:
Daten mit der Legacy-SQL-Syntax abfragen
Im folgenden Beispiel wird gezeigt, wie eine Abfrage mit der Legacy-SQL-Syntax ausgeführt wird. Eine Anleitung zum Aktualisieren Ihrer Abfragen auf GoogleSQL finden Sie im GoogleSQL-Migrationsleitfaden.
pandas-gbq
:
google-cloud-bigquery
:
Mit der BigQuery Storage API umfangreiche Ergebnisse herunterladen
Verwenden Sie die BigQuery Storage API, um umfangreiche Ergebnisse 15- bis 31-mal schneller herunterzuladen.
pandas-gbq
:
google-cloud-bigquery
:
Abfrage mit einer Konfiguration ausführen
Das Senden einer Konfiguration mit einer BigQuery API-Anfrage ist für bestimmte komplexe Vorgänge erforderlich, beispielsweise für das Ausführen einer parametrisierten Abfrage oder das Angeben einer Zieltabelle zum Speichern der Abfrageergebnisse. In pandas-gbq
muss die Konfiguration als Wörterbuch in dem in der BigQuery-REST-Referenz angegebenen Format gesendet werden.
In google-cloud-bigquery
werden Jobkonfigurationsklassen bereitgestellt, beispielsweise QueryJobConfig
, die die erforderlichen Attribute zur Konfiguration komplexer Jobs enthalten.
Im folgenden Beispiel wird gezeigt, wie eine Abfrage mit benannten Parametern ausgeführt wird.
pandas-gbq
:
google-cloud-bigquery
:
Einen pandas DataFrame in eine BigQuery-Tabelle laden
Beide Bibliotheken unterstützen das Hochladen von Daten aus einem pandas DataFrame in eine neue BigQuery-Tabelle. Die Hauptunterschiede sind:
pandas-gbq | google-cloud-bigquery | |
---|---|---|
Unterstützte Typen | Konvertiert den DataFrame in das CSV-Format, bevor er an die API gesendet wird. Dabei werden keine verschachtelten oder Array-Werte unterstützt. | Konvertiert den DataFrame in das Parquet- oder CSV-Format, bevor er an die API gesendet wird. Dabei werden verschachtelte und Array-Werte unterstützt. Wählen Sie Parquet für Struct- und Arraywerte und CSV für Flexibilität bei Datums- und Uhrzeitserialisierung aus. Parquet ist die Standardauswahl. Die Installation von pyarrow , der Parquet-Engine zum Senden der DataFrame-Daten an die BigQuery API, ist erforderlich, wenn Sie den DataFrame in eine Tabelle laden möchten. |
Ladekonfiguration | Wird als Wörterbuch in dem in der BigQuery-REST-Referenz angegebenen Format gesendet | Verwendet die Klasse LoadJobConfig . Sie enthält Attribute für die verschiedenen API-Konfigurationsoptionen. |
pandas-gbq
:
google-cloud-bigquery
:
google-cloud-bigquery
weist die pyarrow
-Bibliothek an, einen pandas-DataFrame in eine Parquet-Datei zu serialisieren.
Installieren Sie das Paket pyarrow
:
conda install -c conda-forge pyarrow
oder
pip install pyarrow
Von pandas-gbq nicht unterstützte Funktionen
Die pandas-gbq
-Bibliothek bietet zwar eine nützliche Schnittstelle zum Abfragen und Schreiben von Daten in Tabellen, sie deckt jedoch viele Features der BigQuery API nicht ab. Dazu gehören unter anderem:
- Datasets verwalten, einschließlich Datasets erstellen, Dataset-Attribute aktualisieren und Datasets löschen
- Laden von Daten in BigQuery aus anderen Formaten als pandas DataFrames
- Tabellen verwalten, einschließlich Tabellen in einem Dataset auflisten, Tabellendaten kopieren und Tabellen löschen
- BigQuery-Daten direkt nach Google Cloud Storage exportieren