1. Übersicht
BigQuery ist das vollständig verwaltete, kostengünstige Data Warehouse von Google für Analysen im Petabyte-Bereich. BigQuery ist ein NoOps-Angebot. Es muss keine Infrastruktur verwaltet werden. Da Sie keinen Datenbankadministrator benötigen, können Sie sich ganz auf die Analyse der Daten konzentrieren und über vertraute SQL-Befehle aussagekräftige Informationen erhalten. Dabei profitieren Sie von unserem Pay-As-You-Go-Modell.
In diesem Codelab verwenden Sie die Google Cloud-Clientbibliotheken für .NET, um öffentliche BigQuery-Datasets mit C# abzufragen.
Lerninhalte
- Cloud Shell verwenden
- BigQuery API aktivieren
- API-Anfragen authentifizieren
- Google Cloud-Clientbibliothek für C# installieren
- Werke von Shakespeare abfragen
- GitHub-Dataset abfragen
- Caching- und Statistikanzeige anpassen
Voraussetzungen
Umfrage
Wie werden Sie diese Anleitung verwenden?
Wie würden Sie Ihre Erfahrung mit C# bewerten?
Wie würden Sie Ihre Erfahrungen mit der Verwendung von Google Cloud Platform-Diensten bewerten?
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird. Sie können sie jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als
PROJECT_IDangegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um Kosten zu vermeiden, die über diese Anleitung hinausgehen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testzeitraum mit einem Guthaben von 300$ teilnehmen.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Cloud Shell aktivieren
- Klicken Sie in der Cloud Console auf Cloud Shell aktivieren
.

Wenn Sie die Cloud Shell zum ersten Mal starten, wird ein Fenster mit einer Beschreibung eingeblendet. Klicken Sie in diesem Fall einfach auf Weiter.

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

Auf dieser virtuellen Maschine sind alle erforderlichen Entwicklungstools installiert. 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 erledigt werden.
Sobald die Verbindung mit der Cloud Shell hergestellt ist, sehen Sie, dass Sie authentifiziert sind und für das Projekt Ihre Projekt-ID eingestellt ist.
- 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`
- 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].
3. Aktivieren der BigQuery-API
Die BigQuery API sollte standardmäßig in allen Google Cloud-Projekten aktiviert sein. Mit dem folgenden Befehl in der Cloud Shell können Sie prüfen, ob dies der Fall ist. BigQuery sollte aufgeführt sein:
gcloud services list
BigQuery sollte aufgeführt sein:
NAME TITLE
bigquery-json.googleapis.com BigQuery API
...
Wenn die BigQuery API nicht aktiviert ist, können Sie sie mit dem folgenden Befehl in der Cloud Shell aktivieren:
gcloud services enable bigquery-json.googleapis.com
4. Installieren Sie die BigQuery-Clientbibliothek für C#
Erstellen Sie zuerst eine einfache C#-Konsolenanwendung, mit der Sie BigQuery API-Beispiele ausführen.
dotnet new console -n BigQueryDemo
Die Anwendung sollte erstellt und die Abhängigkeiten aufgelöst worden sein:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Rufen Sie als Nächstes den Ordner BigQueryDemo auf:
cd BigQueryDemo
Fügen Sie dem Projekt das NuGet-Paket Google.Cloud.BigQuery.V2 hinzu:
dotnet add package Google.Cloud.BigQuery.V2
info : Adding PackageReference for package 'Google.Cloud.BigQuery.V2' into project '/home/atameldev/BigQueryDemo/BigQueryDemo.csproj'.
log : Restoring packages for /home/atameldev/BigQueryDemo/BigQueryDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.BigQuery.V2' version '1.2.0' added to file '/home/atameldev/BigQueryDemo/BigQueryDemo.csproj'.
Jetzt können Sie die BigQuery API verwenden.
5. Werke von Shakespeare abfragen
Ein öffentliches Dataset ist ein Dataset, das in BigQuery gespeichert ist und der Allgemeinheit zugänglich gemacht wird. Es sind viele andere öffentliche Datasets vorhanden, die Sie abfragen können. Einige dieser Datasets werden auch von Google gehostet, viele andere jedoch von Drittanbietern. Weitere Informationen finden Sie auf der Seite Öffentliche Datasets.
Zusätzlich zu den öffentlichen Datasets stellt BigQuery eine begrenzte Anzahl von Beispieltabellen bereit, die Sie abfragen können. Diese Tabellen sind in bigquery-public-data:samples dataset enthalten. Eine dieser Tabellen heißt shakespeare.. Sie enthält einen Wortindex der Werke von Shakespeare und gibt an, wie häufig jedes Wort in jedem Werk vorkommt.
In diesem Schritt führen Sie eine Abfrage für die Shakespeare-Tabelle aus.
Öffnen Sie zuerst den Code-Editor rechts oben in Cloud Shell:

Rufen Sie die Datei Program.cs im Ordner BigQueryDemo auf und ersetzen Sie den Code durch Folgendes. Ersetzen Sie projectId durch Ihre tatsächliche Projekt-ID:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var client = BigQueryClient.Create("projectId");
var table = client.GetTable("bigquery-public-data", "samples", "shakespeare");
var sql = $"SELECT corpus AS title, COUNT(word) AS unique_words FROM {table} GROUP BY title ORDER BY unique_words DESC LIMIT 10";
var results = client.ExecuteQuery(sql, parameters: null);
foreach (var row in results)
{
Console.WriteLine($"{row["title"]}: {row["unique_words"]}");
}
}
}
}
Nehmen Sie sich ein oder zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie die Tabelle abgefragt wird.
Führen Sie die App in Cloud Shell aus:
dotnet run
Es sollte eine Liste mit Wörtern und deren Vorkommen angezeigt werden:
hamlet: 5318
kinghenryv: 5104
cymbeline: 4875
troilusandcressida: 4795
kinglear: 4784
kingrichardiii: 4713
2kinghenryvi: 4683
...
6. GitHub-Dataset abfragen
Um sich besser mit BigQuery vertraut zu machen, führen Sie jetzt eine Abfrage für das öffentliche GitHub-Dataset aus. Die häufigsten Commit-Nachrichten finden Sie auf GitHub. Außerdem verwenden Sie die BigQuery-Webkonsole, um Ad-hoc-Abfragen in der Vorschau anzusehen und auszuführen.
So sehen Sie, wie die Daten aussehen: Öffnen Sie das GitHub-Dataset in der BigQuery-Web-UI:
https://console.cloud.google.com/bigquery?p=bigquery-public-data&d=github_repos&t=commits&page=table
Mit der Schaltfläche „Vorschau“ können Sie sich eine schnelle Vorschau der Daten ansehen:

Rufen Sie die Datei Program.cs im Ordner BigQueryDemo auf und ersetzen Sie den Code durch Folgendes. Ersetzen Sie projectId durch Ihre tatsächliche Projekt-ID:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var client = BigQueryClient.Create("projectId");
var table = client.GetTable("bigquery-public-data", "github_repos", "commits");
var sql = $"SELECT subject AS subject, COUNT(*) AS num_duplicates FROM {table} GROUP BY subject ORDER BY num_duplicates DESC LIMIT 10";
var results = client.ExecuteQuery(sql, parameters: null);
foreach (var row in results)
{
Console.WriteLine($"{row["subject"]}: {row["num_duplicates"]}");
}
}
}
}
Nehmen Sie sich ein bis zwei Minuten Zeit, um sich den Code anzusehen und zu verstehen, wie die Tabelle nach den häufigsten Commit-Nachrichten durchsucht wird.
Führen Sie die App in Cloud Shell aus:
dotnet run
Sie sollten eine Liste mit Commit-Nachrichten und ihren Vorkommen sehen:
Update README.md: 2509242
: 1971725
Initial commit: 1942149
Mirroring from Micro.blog.: 838586
update: 575188
Update data.json: 548651
Update data.js: 548339
Add files via upload: 379941
*** empty log message ***: 358528
Can't you see I'm updating the time?: 286863
7. Caching und Statistiken
Nach der ersten Abfrage werden die Ergebnisse in BigQuery im Cache gespeichert. Daher dauert es viel weniger Zeit, bis die nachfolgenden Abfragen abgeschlossen sind. Das Caching kann mit Abfrageoptionen deaktiviert werden. BigQuery erfasst auch einige Statistiken zu den Abfragen, z. B. Erstellungszeit, Endzeit und Anzahl der insgesamt verarbeiteten Byte.
In diesem Schritt deaktivieren Sie das Caching und lassen sich einige Statistiken zu den Anfragen anzeigen.
Rufen Sie die Datei Program.cs im Ordner BigQueryDemo auf und ersetzen Sie den Code durch Folgendes. Ersetzen Sie projectId durch Ihre tatsächliche Projekt-ID:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var client = BigQueryClient.Create("projectId");
var table = client.GetTable("bigquery-public-data", "github_repos", "commits");
var sql = $"SELECT subject AS subject, COUNT(*) AS num_duplicates FROM {table} GROUP BY subject ORDER BY num_duplicates DESC LIMIT 10";
var queryOptions = new QueryOptions {
UseQueryCache = false
};
var results = client.ExecuteQuery(sql, parameters: null, queryOptions: queryOptions);
foreach (var row in results)
{
Console.WriteLine($"{row["subject"]}: {row["num_duplicates"]}");
}
var job = client.GetJob(results.JobReference);
var stats = job.Statistics;
Console.WriteLine("----------");
Console.WriteLine($"Creation time: {stats.CreationTime}");
Console.WriteLine($"End time: {stats.EndTime}");
Console.WriteLine($"Total bytes processed: {stats.TotalBytesProcessed}");
}
}
}
Einige Hinweise zum Code: Zuerst wird das Caching deaktiviert, indem Abfrageoptionen eingeführt und UseQueryCache auf „false“ gesetzt wird. Zweitens haben Sie über das Jobobjekt auf die Statistiken zur Abfrage zugegriffen.
Führen Sie die App in Cloud Shell aus:
dotnet run
Wie zuvor sollte eine Liste mit Commit-Nachrichten und deren Vorkommen angezeigt werden. Außerdem sollten Sie am Ende einige Statistiken zur Anfrage sehen.
Update README.md: 2509242
: 1971725
Initial commit: 1942149
Mirroring from Micro.blog.: 838586
update: 575188
Update data.json: 548651
Update data.js: 548339
Add files via upload: 379941
*** empty log message ***: 358528
Can't you see I'm updating the time?: 286863
----------
Creation time: 1533052057398
End time: 1533052066961
Total bytes processed: 9944197093
8. Daten in BigQuery laden
Wenn Sie Ihre eigenen Daten abfragen möchten, müssen Sie sie zuerst in BigQuery laden. BigQuery unterstützt das Laden von Daten aus vielen Quellen, z. B. Google Cloud Storage, anderen Google-Diensten und lesbaren Quellen. Sie können Ihre Daten sogar mit Streaming-Insert-Anweisungen streamen. Weitere Informationen finden Sie auf der Seite Daten in BigQuery laden.
In diesem Schritt laden Sie eine in Google Cloud Storage gespeicherte JSON-Datei in eine BigQuery-Tabelle. Die JSON-Datei befindet sich unter gs://cloud-samples-data/bigquery/us-states/us-states.json.
Wenn Sie sich für den Inhalt der JSON-Datei interessieren, können Sie sie mit dem gsutil-Befehlszeilentool in Cloud Shell herunterladen:
gsutil cp gs://cloud-samples-data/bigquery/us-states/us-states.json .
Copying gs://cloud-samples-data/bigquery/us-states/us-states.json...
/ [1 files][ 2.0 KiB/ 2.0 KiB]
Operation completed over 1 objects/2.0 KiB.
Sie sehen, dass sie die Liste der US-Bundesstaaten enthält und jeder Bundesstaat ein JSON-Dokument in einer separaten Zeile ist:
less us-states.json
{"name": "Alabama", "post_abbr": "AL"}
{"name": "Alaska", "post_abbr": "AK"}
...
Wenn Sie diese JSON-Datei in BigQuery laden möchten, rufen Sie die Datei Program.cs im Ordner BigQueryDemo auf und ersetzen Sie den Code durch den folgenden. Ersetzen Sie projectId durch Ihre tatsächliche Projekt-ID:
using System;
using Google.Cloud.BigQuery.V2;
namespace BigQueryDemo
{
class Program
{
static void Main(string[] args)
{
var gcsUri = "gs://cloud-samples-data/bigquery/us-states/us-states.json";
var client = BigQueryClient.Create("projectId");
var dataset = client.GetOrCreateDataset("us_states_dataset");
var schema = new TableSchemaBuilder
{
{ "name", BigQueryDbType.String },
{ "post_abbr", BigQueryDbType.String }
}.Build();
var jobOptions = new CreateLoadJobOptions
{
SourceFormat = FileFormat.NewlineDelimitedJson
};
var table = dataset.GetTableReference("us_states_table");
var loadJob = client.CreateLoadJob(gcsUri, table, schema, jobOptions);
loadJob.PollUntilCompleted();
loadJob.ThrowOnAnyError();
Console.WriteLine("Json file loaded to BigQuery");
}
}
}
Sehen Sie sich an, wie der Code die JSON-Datei lädt und eine Tabelle mit einem Schema in einem Dataset erstellt.
Führen Sie die App in Cloud Shell aus:
dotnet run
Dataset und Tabelle in BigQuery erstellen
Json file loaded to BigQuery
Wenn Sie prüfen möchten, ob das Dataset tatsächlich erstellt wurde, können Sie die BigQuery-Konsole aufrufen. Ein neues Dataset und eine neue Tabelle sollten erstellt worden sein. Wenn Sie zum Vorschau-Tab der Tabelle wechseln, sehen Sie die tatsächlichen Daten:

9. Glückwunsch!
Sie haben gelernt, wie Sie BigQuery mit C# verwenden.
Bereinigen
So vermeiden Sie, dass Ihr Google Cloud Platform-Konto für die in diesem Schnellstart verwendeten Ressourcen belastet wird:
- Rufen Sie die Cloud Platform Console auf.
- Wählen Sie das Projekt aus, das Sie beenden möchten, und klicken Sie oben auf „Löschen“. Das Projekt wird dann zum Löschen geplant.
Weitere Informationen
- Google BigQuery: https://cloud.google.com/bigquery/docs/
- C#/.NET auf der Google Cloud Platform: https://cloud.google.com/dotnet/
- Google Cloud .NET-Client: https://googlecloudplatform.github.io/google-cloud-dotnet/
Lizenz
Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.