Auf dieser Seite wird beschrieben, wie Sie das bq
-Befehlszeilentool zum Ausführen von Abfragen und Laden von Daten verwendet wird.
Vorbereitung
Erstellen Sie mit der Google Cloud Console ein Projekt oder wählen Sie ein Projekt aus und installieren Sie das Cloud SDK, bevor Sie mit dieser Kurzanleitung beginnen.
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
- Installieren und initialisieren Sie das Cloud SDK.
- BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu Aktivieren Sie die BigQuery API. .
- BigQuery bietet eine Sandbox, wenn Sie für Ihr Projekt keine Kreditkarte angeben oder die Abrechnung nicht aktivieren möchten. Die Schritte in diesem Thema funktionieren für Projekte mit und ohne aktivierter Abrechnung. Wenn Sie die Abrechnung aktivieren möchten, lesen Sie die Informationen unter Abrechnungseinstellungen eines Projekts ändern.
Tabelle prüfen
BigQuery enthält mehrere Beispieltabellen, die Sie abfragen können. Im Rahmen dieser Kurzanleitung führen Sie Abfragen für die Tabelle shakespeare
aus. Diese Tabelle enthält für jedes Wort in jedem Shakespeare-Spiel einen Eintrag.
Führen Sie den folgenden Befehl aus, um das Schema einer bestimmten Tabelle zu prüfen. Wenn die Projekt- und Dataset-IDs die Standardwerte für Ihr bq
-Tool sind, können Sie die Projekt- und Dataset-IDs weglassen.
bq show PROJECT_ID:DATASET_ID.TABLE_ID
Im folgenden Beispiel wird die Tabelle shakespeare
im Dataset samples
geprüft:
bq show bigquery-public-data:samples.shakespeare
Ausgabe:
Table bigquery-public-data:samples.shakespeare Last modified Schema Total Rows Total Bytes Expiration ----------------- ------------------------------------ ------------ ------------- ------------ 26 Aug 14:43:49 |- word: string (required) 164656 6432064 |- word_count: integer (required) |- corpus: string (required) |- corpus_date: integer (required)
Hilfe anzeigen
Verwenden Sie bq help
, um detaillierte Informationen zum bq
-Befehlszeilentool abzurufen.
bq help
Fügen Sie einen Befehlsnamen hinzu, um Informationen zu einem bestimmten Befehl abzurufen. Mit dem folgenden Aufruf von bq help
werden beispielsweise Informationen zum Befehl query
abgefragt:
bq help query
Abfrage ausführen
Führen Sie eine Abfrage aus, um zu ermitteln, wie häufig der Teilstring raisin
in den Werken von Shakespeare vorkommt.
Abfragen führen Sie mit dem Befehl bq query "SQL_STATEMENT"
aus.
Verwenden Sie für Anführungszeichen innerhalb von
SQL_STATEMENT
das Escapezeichen\
.Verwenden Sie einen anderen Anführungszeichentyp als die umschließenden Anführungszeichen (
"
anstatt'
).
Die folgende Standard-SQL-Abfrage zählt die Wörter, in denen der Teilstring raisin
in allen Werken von Shakespeare vorkommt:
bq query --use_legacy_sql=false \ 'SELECT word, SUM(word_count) AS count FROM `bigquery-public-data`.samples.shakespeare WHERE word LIKE "%raisin%" GROUP BY word'
Ausgabe:
Waiting on job_dcda37c0bbed4c669b04dfd567859b90 ... (0s) Current status: DONE +---------------+-------+ | word | count | +---------------+-------+ | Praising | 4 | | raising | 5 | | raisins | 1 | | praising | 8 | | dispraising | 2 | | dispraisingly | 1 | +---------------+-------+
Bei der Suche nach einem Wort, das in keinem der Werke von Shakespeare enthalten ist, werden keine Ergebnisse zurückgegeben. Die folgende Suche nach huzzah
gibt beispielsweise keine Übereinstimmungen zurück.
bq query --use_legacy_sql=false \ 'SELECT word FROM `bigquery-public-data`.samples.shakespeare WHERE word = "huzzah"'
Ausgabe:
Waiting on job_e19 ... (4s) Current status: DONE $
Neue Tabelle erstellen
Erstellen Sie nun Ihre eigene Tabelle. Jede Tabelle wird in einem Dataset gespeichert. Ein Dataset ist eine Gruppe von Ressourcen wie Tabellen oder Ansichten.
Schritt 1: Beispieldaten herunterladen
Die Daten enthalten ca. 7 MB Daten zu beliebten Babynamen. Diese Daten werden von der US-amerikanischen Sozialversicherungsanstalt bereitgestellt.
Extrahieren Sie die Datei:
Die ZIP-Datei enthält eine Infodatei, in der das Dataset-Schema beschrieben wird. Weitere Informationen zum Dataset erhalten Sie in diesem Artikel.
Öffnen Sie die Datei
yob2010.txt
zur Prüfung. Die Datei ist eine CSV-Datei mit den folgenden drei Spalten: Name, Geschlecht (M
oderF
) und Anzahl der Kinder mit diesem Namen. Die Datei hat keine Kopfzeile.Kopieren oder verschieben Sie die Datei
yob2010.txt
in das Verzeichnis, in dem Sie dasbq
-Befehlszeilentool ausführen. Wenn Sie dasbq
-Befehlszeilentool in Cloud Shell ausführen, laden Sie die Dateiyob2010.txt
hoch. Weitere Informationen finden Sie unter Dateien mit Cloud Shell verwalten.
Schritt 2: Neues Dataset erstellen
-
Prüfen Sie mit dem Befehl
bq ls
, ob in Ihrem Standardprojekt bereits Datasets vorhanden sind.bq ls
Beispielausgabe:
datasetId ------------- olddataset
- Führen Sie den Befehl
bq ls
noch einmal aus, um die Datasets in einem bestimmten Projekt aufzulisten. Fügen Sie dazu die Projekt-ID gefolgt von einem Doppelpunkt (:) hinzu. Das folgende Beispiel listet die Datasets im Projektpublicdata
auf.bq ls publicdata:
Ausgabe:
datasetId ----------- samples
-
Verwenden Sie den Befehl
bq mk
, um ein neues Dataset mit dem Namenbabynames
in Ihrem Standardprojekt zu erstellen. Der Name des Datasets kann bis zu 1.024 Zeichen enthalten und aus A-Z, a-z, 0–9 und dem Unterstrich bestehen. Er darf jedoch nicht mit einer Zahl oder einem Unterstrich beginnen oder Leerzeichen enthalten.bq mk babynames
Beispielausgabe:
Dataset 'myprojectid:babynames' successfully created.
- Führen Sie den Befehl
bq ls
aus, um zu prüfen, ob das Dataset nun als Teil des Standardprojekts angezeigt wird:bq ls
Beispielausgabe:
datasetId ------------- olddataset babynames
Schritt 3: Tabelle hochladen
Mit dem Befehl bq load
werden in einem Schritt eine Tabelle erstellt oder aktualisiert und Daten geladen.
-
Führen Sie den Befehl
bq load
aus, um die Quelldatei in eine neue Tabelle mit dem Namennames2010
im zuvor erstellten Datasetbabynames
zu laden. Dieser Befehl wird standardmäßig synchron ausgeführt und dauert einige Sekunden.bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer
Folgende
bq load
-Befehlsargumente werden verwendet:- Dataset-ID:
babynames
- Tabellen-ID:
names2010
- Quelle:
yob2010.txt
: Geben Sie gegebenenfalls den vollständigen Pfad zur Datei an - Schema:
name:string,gender:string,count:integer
Beispielausgabe:
Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s) Current status: DONE
- Dataset-ID:
-
Mit dem Befehl
bq ls
prüfen Sie nun, ob die Tabelle im Dataset angezeigt wird:bq ls babynames
Ausgabe:
tableId Type ----------- ------- names2010 TABLE
-
Lassen Sie sich mit dem Befehl
bq show
das Schema anzeigen:bq show babynames.names2010
Ausgabe:
Table myprojectid:babynames.names2010 Last modified Schema Total Rows Total Bytes Expiration ----------------- ------------------- ------------ ------------- ------------ 13 Mar 15:31:00 |- name: string 34041 653855 |- gender: string |- count: integer
In BigQuery werden standardmäßig UTF-8-codierte Daten erwartet.
Wenn Sie Daten in ISO-8859-1 (oder Latin-1)-Codierung vorliegen und Probleme auftreten, weisen Sie BigQuery mit dem Flag -E
an, Ihre Daten als Latin-1 zu verarbeiten. Weitere Informationen finden Sie unter Codierung.
Schritt 4: Abfragen ausführen
-
Führen Sie den folgenden Befehl aus, um die beliebtesten Mädchennamen zurückzugeben:
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"
Ausgabe:
Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE +----------+-------+ | name | COUNT | +----------+-------+ | Isabella | 22731 | | Sophia | 20477 | | Emma | 17179 | | Olivia | 16860 | | Ava | 15300 | +----------+-------+
-
Führen Sie den folgenden Befehl aus, um die ungewöhnlichsten Jungennamen anzuzeigen.
Die Mindestanzahl beträgt 5, da die Quelldaten Namen, die weniger als 5 Mal vorkommen, auslässt.
bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"
Ausgabe:
Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE +----------+-------+ | name | COUNT | +----------+-------+ | Aarian | 5 | | Aaidan | 5 | | Aamarion | 5 | | Aadhavan | 5 | | Aaqib | 5 | +----------+-------+
Bereinigen
So vermeiden Sie, dass Ihrem Google Cloud-Konto die in dieser Kurzanleitung verwendeten Ressourcen in Rechnung gestellt werden:
Führen Sie den Befehl
bq rm
aus, um das Datasetbabynames
zu entfernen. Löschen Sie mit dem Flag-r
alle Tabellen im Dataset, einschließlich der Tabellenames2010
.bq rm -r babynames
Bestätigen Sie den Löschbefehl durch die Eingabe von
y
.
Nächste Schritte
Weitere Informationen zum
bq
-Befehlszeilentool finden Sie unterbq
-Befehlszeilentool.Weitere Informationen zum Exportieren von Daten aus BigQuery finden Sie unter Tabellendaten exportieren.
Weitere Informationen zum programmgesteuerten Zugriff auf BigQuery finden Sie in der Referenz zur REST API oder auf der Seite BigQuery API-Clientbibliotheken.