Wir haben kürzlich ein detailliertes Buch über die Arbeit mit dem Google BigQuery Data Warehouse veröffentlicht . Heute haben wir uns entschlossen, dieses Thema noch einmal kurz anzusprechen und einen kleinen Fall zum Abfragen von BigQuery-Daten in Python und R zu veröffentlichen.
Lassen Sie uns in den Kommentaren wissen, ob Sie an einem Beitrag zum maschinellen Lernen mit BigQuery interessiert sind
Überblick
In diesem Artikel erfahren Sie, wie Sie Google BigQuery-Daten mit Python und R laden und anschließend die Daten abfragen, um nützliche Erkenntnisse zu gewinnen. Wir werden die Google Cloud BigQuery- Bibliothek verwenden , um eine Verbindung zu BigQuery Python herzustellen, und die bigrquery- Bibliothek , um dasselbe in R zu tun.
Wir werden auch zwei Stufen der BigQuery-Datenmanipulation mit Python / R diskutieren:
- Google BigQuery-Konnektivität und Datenzugriff
- Abfragen von Daten mit Python / R.
In diesem Artikel wird davon ausgegangen, dass alle Ihre Benutzerdaten in Google BigQuery gespeichert sind.
Python
Python ist eine der beliebtesten Allzwecksprachen zum Bearbeiten von Daten. Aufgrund seiner Flexibilität und Benutzerfreundlichkeit erfreut es sich Aufmerksamkeit und Nachfrage und verfügt in der Datenwissenschaft über eine Vielzahl von Bibliotheken und Tools für die Interaktion mit Systemen von Drittanbietern.
Herstellen einer Verbindung zu Google BigQuery mit Python
Um Google BigQuery-Daten mit Python abzufragen, müssen Sie den Python-Client mit Ihrer BigQuery-Instanz verbinden. Hierbei wird die Cloud-Client-Bibliothek für die Google BigQuery-API verwendet. Es gibt auch alternative Lösungen für die Verbindung mit BigQuery mithilfe von Python. Zum Beispiel ist die BigQuery-Python- Bibliothek von tylertreat großartig.
Wir werden mit der Google Cloud BigQuery-Bibliothek arbeiten, da diese stabil ist und offiziell von Google unterstützt wird.
Dies setzt voraus, dass Sie bereits eine Python-Entwicklungsumgebung eingerichtet haben.
Führen Sie zum Installieren der Bibliothek den folgenden Befehl in der Befehlszeile aus:
pip install --upgrade google-cloud-bigquery
Als nächstes verbinden wir den Client mit der Datenbank. Dazu müssen Sie eine JSON-Datei herunterladen, die Anmeldeinformationen für den BigQuery-Dienst enthält. Wenn Sie noch keine haben, können Sie hier eine erstellen. Laden Sie als Nächstes diese JSON-Datei auf Ihren lokalen Computer herunter.
Nachdem wir alles eingerichtet haben, initialisieren wir die Verbindung. Hierfür wird folgender Python-Code verwendet:
rom google.cloud import bigquery
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
'path/to/file.json')
project_id = 'my-bq'
client = bigquery.Client(credentials= credentials,project=project_id)
Im obigen Snippet müssen Sie auch den
project_idSpeicherort der JSON-Datei mit dem Schlüssel angeben und ' path/to/file.json' durch den tatsächlich korrekten Pfad zur JSON-Datei ersetzen, die auf dem lokalen Computer gespeichert ist.
In Google BigQuery ist ein Projekt ein Container der obersten Ebene und bietet die Standardzugriffskontrolle für alle Datensätze.
Abfragen von BigQuery-Daten mit Python
Nachdem unser BigQuery-Client eingerichtet und einsatzbereit ist, können wir viele BigQuery-Daten abfragen.
Hierbei wird eine Abfragemethode verwendet, mit der der Abfragejob in eine BigQuery-Warteschlange gestellt wird. Die Anforderungen werden dann asynchron ausgeführt. Dies bedeutet, dass wir keine Verzögerungen angeben und der Client darauf wartet, dass der Auftrag abgeschlossen wird. In diesem Fall gibt die Methode eine Instanz zurück,
Query_Jobdie die Ergebnisse enthält.
Weitere Informationen zur Funktionsweise dieser Methode finden Sie in der offiziellen Dokumentation hier .
So sieht der interessierende Python-Code aus:
query_job = client.query("""
SELECT *
FROM dataset.my_table
LIMIT 1000 """)
results = query_job.result() # .
Bitte beachten Sie, dass die obige Abfrage standardmäßig die Standard-SQL-Syntax verwendet. Wenn Sie Legacy-SQL verwenden möchten, sieht der Code folgendermaßen aus:
job_config.use_legacy_sql = True
query_job = client.query("""
SELECT *
FROM dataset.my_table
LIMIT 1000""", job_config = job_config)
results = query_job.result() # .
R.
Die R-Sprache ist eine beliebte Alternative zu Python und wird in der Datenwissenschaft aktiv verwendet. Wenn Sie an einer detaillierten und methodischen statistischen Analyse von Daten interessiert sind, gibt es nur wenige Sprachen, die mit R konkurrieren können.
Bei der Arbeit mit Google BigQuery bietet R auch eine zuverlässige und benutzerfreundliche Bibliothek zum Abfragen und Bearbeiten von Daten. Hier werden wir mit der Bigrquery- Bibliothek arbeiten , die von Hadley Wickham, Forschungsdirektor bei RStudio, erstellt und gepflegt wird.
Dies setzt voraus, dass Sie Ihre Entwicklungsumgebung bereits in R eingerichtet haben. Wenn nicht, verwenden Sie dieses Handbuch , um RStudio einzurichten.
Stellen Sie mit R eine Verbindung zu Google BigQuery her
Führen Sie zum Installieren von bigrquery den folgenden Befehl über die R-Konsole aus:
install.packages(“bigrquery”)
So einfach ist das! Wir sind bereit zu gehen.
Wie bei Python ist für den Zugriff auf Google Cloud Services unsere R-Client-Autorisierung erforderlich. Wie aus der folgt bigrquery Dokumentation , folgen Sie der Aufforderung von der R - Konsole die Berechtigung URL zu öffnen, und kopieren Sie den Code auf der Konsole.
Bitte beachten Sie: Diese Autorisierung muss nur einmal erfolgen. Alle nachfolgenden Anforderungen aktualisieren automatisch die Zugangsdaten.
Abfragen von BigQuery-Daten mit R.
Gehen Sie folgendermaßen vor, um BigQuery-Daten in R abzufragen:
- Wir geben die Projekt-ID in der Google Cloud-Konsole an, wie dies in Python geschehen ist.
- Wir werden eine Abfragezeichenfolge bilden, mit der wir Daten anfordern.
- Nennen wir es
query_execmit unserer Projekt-ID und Abfragezeichenfolge.
Hier ist der Code, um all dies zu tun:
#
library(bigrquery)
# ID
project_id <- "your-project-id"
#
sql_string <- "SELECT * FROM dataset.my_table LIMIT 1000"
#
query_results <- query_exec(sql_string, project = project_id, useLegacySql = FALSE)
Wie bei Python können Sie Abfragen ausführen, die in Legacy-SQL geschrieben wurden. Sie können den Wert
useLegacySqlauch TRUEin Ihrer Funktion ändern query_exec.
Fazit
Daher haben wir untersucht, wie einfach und unkompliziert es ist, mit in Google BigQuery gespeicherten Daten zu arbeiten, wobei auf diese in Python und R verwiesen wird.
In diesen beiden Sprachen ist es nicht schwierig, ein statistisches Modell auf der Grundlage der auf diese Weise verarbeiteten Daten zu erstellen und das Modell selbst in zu verwenden verschiedene Zwecke: zu verstehen, wie sich der Benutzer in der Anwendung verhält, die Abwanderungsrate vorherzusagen usw.