Wikipedia-Dataset in BigQuery abfragen

1. Übersicht

BigQuery ist eine vollständig verwaltete, managementfreie und kostengünstige Analysedatenbank von Google. Mit diesem Tool können Sie mehrere Terabyte an Daten abfragen und müssen dabei weder eine Infrastruktur verwalten noch benötigen Sie einen Datenbankadministrator. BigQuery basiert auf dem vertrauten SQL und die Abrechnung erfolgt nach dem „Pay as you go“-Modell. Mithilfe von BigQuery können Sie sich auf die Datenanalyse konzentrieren und wichtige Informationen erhalten.

In diesem Codelab untersuchen Sie das Wikipedia-Dataset mit BigQuery.

Lerninhalte

  • BigQuery verwenden
  • Einen realen Datensatz in BigQuery laden
  • Abfrage schreiben, um Erkenntnisse aus einem großen Dataset zu gewinnen

Voraussetzungen

Umfrage

Wie werden Sie diese Anleitung verwenden?

Nur lesen Lesen und Übungen durchführen

Wie würden Sie Ihre Erfahrung mit Google Cloud bewerten?

Anfänger Mittelstufe Fortgeschritten

2. Einrichtung und Anforderungen

BigQuery aktivieren

Wenn Sie noch kein Google-Konto haben, müssen Sie eines erstellen.

  1. Melden Sie sich in der Google Cloud Console an und rufen Sie BigQuery auf. Sie können die BigQuery-Web-UI auch direkt öffnen, indem Sie die folgende URL in Ihren Browser eingeben.
https://console.cloud.google.com/bigquery
  1. Akzeptieren Sie die Nutzungsbedingungen.
  2. Bevor Sie BigQuery verwenden können, müssen Sie ein Projekt erstellen. Folgen Sie dazu den Eingabeaufforderungen.

Wählen Sie einen Projektnamen aus und notieren Sie sich die Projekt-ID. 1884405a64ce5765.png

Die Projekt-ID ist ein Name, der übergreifend über alle Google Cloud-Projekte nur einmal vergeben wird. Sie wird später in diesem Codelab als PROJECT_ID bezeichnet.

In diesem Codelab werden BigQuery-Ressourcen innerhalb der BigQuery-Sandbox-Limits verwendet. Ein Rechnungskonto ist nicht erforderlich. Wenn Sie die Sandbox-Beschränkungen später entfernen möchten, können Sie ein Rechnungskonto hinzufügen, indem Sie sich für den kostenlosen Testzeitraum von Google Cloud registrieren.

Im nächsten Abschnitt laden Sie das Wikipedia-Dataset.

3. Dataset erstellen

Erstellen Sie zuerst ein neues Dataset im Projekt. Ein Dataset besteht aus mehreren Tabellen.

  1. Klicken Sie zum Erstellen eines Datasets im Bereich „Ressourcen“ auf den Projektnamen und dann auf Dataset erstellen:

4a5983b4dc299705.png

  1. Geben Sie lab als Dataset-ID ein:

a592b5b9be20fdec.png

  1. Klicken Sie auf Dataset erstellen, um ein leeres Dataset zu erstellen.

4. Daten mit dem bq-Befehlszeilenprogramm laden

Cloud Shell aktivieren

  1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren 4292cbf4971c9786.png.

bce75f34b2c53987.png

Wenn Sie die Cloud Shell zuvor noch nicht gestartet haben, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter. So sieht dieses Fenster aus:

70f315d7b402b476.png

Das Herstellen der Verbindung mit der Cloud Shell sollte nur wenige Augenblicke dauern.

fbe3a0674c982259.png

Auf dieser virtuellen Maschine sind alle Entwicklungstools installiert, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Die meisten, wenn nicht sogar alle Aufgaben in diesem Codelab können mit einem Browser oder Ihrem Chromebook erledigt werden.

Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie bereits authentifiziert sind und für das Projekt schon Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in der Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list

Befehlsausgabe

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um zu bestätigen, dass der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project

Befehlsausgabe

[core]
project = <PROJECT_ID>

Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:

gcloud config set project <PROJECT_ID>

Befehlsausgabe

Updated property [core/project].

Daten in BigQuery laden

Einige der Daten vom 10. April 2019 aus dem Wikimedia-Dataset für Seitenaufrufe sind zur besseren Übersicht in Google Cloud Storage unter gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz verfügbar. Die Datendatei ist eine mit GZip komprimierte CSV-Datei. Sie können diese Datei direkt mit dem Befehlszeilentool bq laden. Im Rahmen des Ladebefehls beschreiben Sie auch das Schema der Datei.

bq load \
  --source_format CSV \
  --field_delimiter " " \
  --allow_jagged_rows \
  --quote "" \
  --max_bad_records 3 \
  $GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_140000 \
  gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz \
  wiki,title,requests:integer,zero:integer

Sie haben einige erweiterte Optionen zum Laden der Datei mit Seitenaufrufen verwendet:

  • Legen Sie --source_format CSV fest, um anzugeben, dass die Datei als CSV-Datei geparst werden soll. Dieser Schritt ist optional, da CSV das Standardformat ist.
  • Legen Sie --field_delimiter " " fest, um anzugeben, dass Felder durch ein einzelnes Leerzeichen getrennt werden.
  • Legen Sie --allow_jagged_rows fest, um die Zeilen mit weniger Spalten einzuschließen und die Fehler beim Laden der CSV-Datei zu ignorieren.
  • Legen Sie --quote "" fest, um anzugeben, dass Strings nicht in Anführungszeichen stehen.
  • Legen Sie --max_bad_records 3 fest, um beim Parsen der CSV-Datei maximal drei Fehler zu ignorieren.

Weitere Informationen zur bq-Befehlszeile finden Sie in der Dokumentation.

5. Dataset als Vorschau ansehen

Öffnen Sie in der BigQuery-Konsole eine der Tabellen, die Sie gerade geladen haben.

  1. Maximieren Sie das Projekt.
  2. Maximieren Sie das Dataset.
  3. Wählen Sie die Tabelle aus. 99f875c838ed9a58.png

Das Tabellenschema finden Sie auf dem Tab Schema. 4. So sehen Sie, wie viele Daten in der Tabelle enthalten sind:

742cd54fbf17085.png

  1. Öffnen Sie den Tab Vorschau, um eine Auswahl von Zeilen aus der Tabelle zu sehen.

397a9c25480735cc.png

6. Abfrage erstellen

  1. Klicken Sie auf Neue Abfrage erstellen:

cc28282a25c9746e.png

Dadurch wird der Abfrageeditor aufgerufen:

e881286d275ab4ec.png

  1. Mit der folgenden Abfrage können Sie die Gesamtzahl der Wikimedia-Aufrufe zwischen 14:00 und 15:00 Uhr am 10. April 2019 ermitteln:
SELECT SUM(requests)
FROM `lab.pageviews_20190410_140000`
  1. Klicken Sie auf Ausführen:

9abb7c4039961f5b.png

Nach einigen Sekunden wird das Ergebnis unten aufgeführt. Außerdem wird angezeigt, wie viele Daten verarbeitet wurden:

a119b65f2ca49e41.png

Bei dieser Abfrage wurden 123,9 MB verarbeitet, obwohl die Tabelle 691,4 MB groß ist. BigQuery verarbeitet nur die Byte aus den Spalten, die in der Abfrage verwendet werden. Die insgesamt verarbeitete Datenmenge kann daher deutlich geringer sein als die Tabellengröße. Mit Clustering und Partitionierung lässt sich die verarbeitete Datenmenge noch weiter reduzieren.

7. Erweiterte Suchanfragen

Wikipedia-Seitenaufrufe finden

Das Wikimedia-Dataset enthält Seitenaufrufe für alle Wikimedia-Projekte (einschließlich Wikipedia, Wiktionary, Wikibooks und Wikiquote). Schränken Sie die Abfrage auf englischsprachige Wikipedia-Seiten ein, indem Sie eine WHERE-Anweisung hinzufügen:

SELECT SUM(requests), wiki
FROM `lab.pageviews_20190410_140000`
WHERE wiki = "en"
GROUP BY wiki

d6c6c7901c314da7.png

Durch das Abfragen einer zusätzlichen Spalte, wiki, hat sich die Menge der verarbeiteten Daten von 124 MB auf 204 MB erhöht.

BigQuery unterstützt viele der bekannten SQL-Klauseln wie CONTAINS, GROUP BY, und ORDER BY sowie eine Reihe von Aggregationsfunktionen. Außerdem können Sie auch reguläre Ausdrücke verwenden, um Textfelder abzufragen. Hier ein paar Beispiele:

SELECT title, SUM(requests) requests
FROM `lab.pageviews_20190410_140000`
WHERE
  wiki = "en"
  AND REGEXP_CONTAINS(title, 'Red.*t')
GROUP BY title
ORDER BY requests DESC

Mehrere Tabellen abfragen

Sie können einen Bereich von Tabellen auswählen, die mit einer Platzhaltertabelle zusammengeführt werden sollen.

  1. Erstellen Sie zuerst eine zweite Tabelle, die Sie abfragen können, indem Sie die Seitenaufrufe der nächsten Stunde in eine neue Tabelle laden:
bq load \
  --source_format CSV \
  --field_delimiter " " \
  --quote "" \
  $GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_150000 \
  gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-150000.gz \
  wiki,title,requests:integer,zero:integer
  1. Führen Sie im Abfrageeditor eine Abfrage für beide geladenen Tabellen aus, indem Sie Tabellen mit dem Präfix „pageviews_2019“ abfragen:
SELECT title, SUM(requests) requests
FROM `lab.pageviews_2019*`
WHERE
  wiki = "en"
  AND REGEXP_CONTAINS(title, 'Red.*t')
GROUP BY title
ORDER BY requests DESC

Sie können die Tabellen mit der Pseudospalte _TABLE_SUFFIX selektiver filtern. Diese Abfrage ist auf Tabellen beschränkt, die dem 10. April entsprechen.

SELECT title, SUM(requests) requests
FROM `lab.pageviews_2019*`
WHERE
  _TABLE_SUFFIX BETWEEN '0410' AND '0410_9999999'
  AND wiki = "en"
  AND REGEXP_CONTAINS(title, 'Red.*t')
GROUP BY title
ORDER BY requests DESC

8. Bereinigen

Optional können Sie das Dataset, das Sie erstellt haben, mit dem Befehl bq rm löschen. Verwenden Sie das Flag -r, um alle darin enthaltenen Tabellen zu entfernen.

bq rm -r lab

9. Glückwunsch!

Sie haben BigQuery und SQL verwendet, um das reale Wikipedia-Dataset mit Seitenaufrufen abzufragen. Sie können Datasets im Petabyte-Bereich abfragen.

Weitere Informationen