Kurzanleitung zur Verwendung des bq-Befehlszeilentools

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.

  1. 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.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Installieren und initialisieren Sie das Cloud SDK.
  4. BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu Aktivieren Sie die BigQuery API.

    Aktivieren Sie die API

    .
  5. 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.

  1. Laden Sie die ZIP-Datei mit den Babynamen herunter.

  2. 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.

  3. Öffnen Sie die Datei yob2010.txt zur Prüfung. Die Datei ist eine CSV-Datei mit den folgenden drei Spalten: Name, Geschlecht (M oder F) und Anzahl der Kinder mit diesem Namen. Die Datei hat keine Kopfzeile.

  4. Kopieren oder verschieben Sie die Datei yob2010.txt in das Verzeichnis, in dem Sie das bq-Befehlszeilentool ausführen. Wenn Sie das bq-Befehlszeilentool in Cloud Shell ausführen, laden Sie die Datei yob2010.txt hoch. Weitere Informationen finden Sie unter Dateien mit Cloud Shell verwalten.

Schritt 2: Neues Dataset erstellen

  1. Prüfen Sie mit dem Befehl bq ls, ob in Ihrem Standardprojekt bereits Datasets vorhanden sind.

    bq ls

    Beispielausgabe:

      datasetId
     -------------
      olddataset
  2. 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 Projekt publicdata auf.
    bq ls publicdata:

    Ausgabe:

      datasetId
     -----------
      samples
  3. Verwenden Sie den Befehl bq mk, um ein neues Dataset mit dem Namen babynames 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.
  4. 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.

  1. Führen Sie den Befehl bq load aus, um die Quelldatei in eine neue Tabelle mit dem Namen names2010 im zuvor erstellten Dataset babynames 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
  2. Mit dem Befehl bq ls prüfen Sie nun, ob die Tabelle im Dataset angezeigt wird:

    bq ls babynames

    Ausgabe:

       tableId    Type
     ----------- -------
      names2010   TABLE
    
  3. 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

  1. 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 |
    +----------+-------+
    
  2. 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:

  1. Führen Sie den Befehl bq rm aus, um das Dataset babynames zu entfernen. Löschen Sie mit dem Flag -r alle Tabellen im Dataset, einschließlich der Tabelle names2010.

    bq rm -r babynames
    
  2. Bestätigen Sie den Löschbefehl durch die Eingabe von y.

Nächste Schritte