BigQuery mit C# verwenden

BigQuery mit C# verwenden

Informationen zu diesem Codelab

subjectZuletzt aktualisiert: Juni 26, 2023
account_circleVerfasst von Mete Atamel

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 und Sie benötigen keinen Datenbankadministrator. Sie können sich also ganz auf die Datenanalyse konzentrieren, um aussagekräftige Informationen zu erhalten, vertrautes SQL verwenden und unser Pay-as-you-go-Modell nutzen.

In diesem Codelab verwenden Sie Google Cloud-Clientbibliotheken für .NET, um öffentliche BigQuery-Datasets mit C# abzufragen.

Aufgaben in diesem Lab

  • Cloud Shell verwenden
  • BigQuery API aktivieren
  • API-Anfragen authentifizieren
  • Google Cloud-Clientbibliothek für C# installieren
  • Abfrage der Werke von Shakespeare
  • GitHub-Dataset abfragen
  • Caching und Anzeige von Statistiken anpassen

Voraussetzungen

  • Google Cloud Platform-Projekt
  • Browser, z. B. Chrome oder Firefox
  • Vertrautheit mit C#

Umfrage

<ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder"> <ph type="x-smartling-placeholder">

Wie möchten Sie diese Anleitung nutzen?

Wie würden Sie Ihre Erfahrung mit C# bewerten?

Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud Platform-Diensten bewerten?

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als PROJECT_ID bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten.
  • Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Cloud Shell aktivieren

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

cb81e7c8e34bc8d.png

Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.

d95252b003979716.png

Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.

7833d5e1c5d18f54.png

Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt. Dadurch werden die Netzwerkleistung und die Authentifizierung erheblich verbessert. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.

Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in 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 in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob 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 in allen Google Cloud-Projekten standardmäßig aktiviert sein. Mit dem folgenden Befehl in Cloud Shell können Sie überprüfen, ob dies zutrifft: Sie sollten BigQuery aufgelistet sein:

gcloud services list

Sie sollten BigQuery sehen:

NAME                              TITLE
bigquery
-json.googleapis.com      BigQuery API
...

Falls die BigQuery API nicht aktiviert ist, können Sie sie mit dem folgenden Befehl in Cloud Shell aktivieren:

gcloud services enable bigquery-json.googleapis.com

4. BigQuery-Clientbibliothek für C# installieren

Erstellen Sie zuerst eine einfache C#-Konsolenanwendung, mit der Sie BigQuery API-Beispiele ausführen werden.

dotnet new console -n BigQueryDemo

Die erstellte Anwendung und die Abhängigkeiten sollten aufgelöst werden:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Gehen Sie dann zum Ordner BigQueryDemo:

cd BigQueryDemo

Fügen Sie dem Projekt außerdem 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 sind Sie bereit, die BigQuery API zu verwenden.

5. Die Werke von Shakespeare abfragen

Ein öffentliches Dataset ist ein Dataset, das in BigQuery gespeichert ist und der Allgemeinheit zugänglich gemacht wird. Es gibt viele weitere öffentliche Datasets, 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 zur Verfügung, 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, der angibt, wie oft jedes Wort in jedem Korpus vorkommt.

In diesem Schritt fragen Sie die Shakespeare-Tabelle ab.

Öffnen Sie zuerst oben rechts in Cloud Shell den Code-Editor:

fd3fc1303e63572.png

Gehen Sie zur Datei Program.cs im Ordner BigQueryDemo und ersetzen Sie den Code durch den folgenden Code. Achten Sie darauf, projectId durch Ihre tatsächliche Projekt-ID zu ersetzen:

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 bis zwei Minuten Zeit, um den Code zu untersuchen und zu sehen, wie die Tabelle abgefragt wird.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Es sollte eine Liste mit Wörtern und ihrer Vorkommnisse angezeigt werden:

hamlet: 5318
kinghenryv
: 5104
cymbeline
: 4875
troilusandcressida
: 4795
kinglear
: 4784
kingrichardiii
: 4713
2kinghenryvi: 4683
...

6. GitHub-Dataset abfragen

Um sich mit BigQuery besser vertraut zu machen, führen Sie nun eine Abfrage für das öffentliche GitHub-Dataset aus. Die häufigsten Commit-Nachrichten finden Sie auf GitHub. Außerdem verwenden Sie die Webkonsole von BigQuery für die Vorschau und Ausführung von Ad-hoc-Abfragen.

Um zu sehen, wie die Daten aussehen, öffnen Sie das GitHub-Dataset in der BigQuery-Web-UI:

https://console.cloud.google.com/bigquery?p=bigquery-public-data&amp;d=github_repos&amp;t=commits&amp;page=table

Über die Schaltfläche „Vorschau“ können Sie sich schnell eine Vorschau der Daten anzeigen lassen:

f706bfe3dfcbd267.png

Gehen Sie zur Datei Program.cs im Ordner BigQueryDemo und ersetzen Sie den Code durch den folgenden Code. Achten Sie darauf, projectId durch Ihre tatsächliche Projekt-ID zu ersetzen:

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 sehen, wie die Tabelle nach den häufigsten Commit-Nachrichten abgefragt wird.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Es sollte eine Liste der Commit-Nachrichten und deren Vorkommen angezeigt werden:

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 von BigQuery im Cache gespeichert. Infolgedessen benötigen die nachfolgenden Abfragen viel weniger Zeit. Es ist möglich, das Caching mit Abfrageoptionen zu deaktivieren. BigQuery verfolgt auch einige Statistiken zu den Abfragen, z. B. Erstellungszeit, Endzeit und insgesamt verarbeitete Byte.

In diesem Schritt deaktivieren Sie das Caching und zeigen auch einige Statistiken zu den Abfragen an.

Gehen Sie zur Datei Program.cs im Ordner BigQueryDemo und ersetzen Sie den Code durch den folgenden Code. Achten Sie darauf, projectId durch Ihre tatsächliche Projekt-ID zu ersetzen:

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}");
       
}
   
}
}

Wichtige Hinweise zum Code. Zunächst wird das Caching deaktiviert, indem Abfrageoptionen eingeführt und UseQueryCache auf „false“ gesetzt werden. Zweitens haben Sie über das Jobobjekt auf die Statistiken zur Abfrage zugegriffen.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Wie zuvor sollten Sie eine Liste der Commit-Nachrichten und deren Vorkommen sehen. Außerdem sollten am Ende einige Statistiken zur Abfrage angezeigt werden.

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 diese zuerst in BigQuery laden. BigQuery unterstützt das Laden von Daten aus vielen Quellen wie Google Cloud Storage oder anderen Google-Diensten, einer lesbaren Quelle. 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 mehr über den Inhalt der JSON-Datei erfahren möchten, können Sie das gsutil-Befehlszeilentool verwenden, um sie in Cloud Shell herunterzuladen:

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.

Wie Sie sehen, enthält sie die Liste der US-Bundesstaaten und jeder Bundesstaat ist ein JSON-Dokument in einer separaten Zeile:

less us-states.json
{"name": "Alabama", "post_abbr": "AL"}
{"name": "Alaska", "post_abbr":  "AK"}
...

Um diese JSON-Datei in BigQuery zu laden, rufen Sie die Datei Program.cs im Ordner BigQueryDemo auf und ersetzen Sie den Code durch den folgenden Code. Achten Sie darauf, projectId durch Ihre tatsächliche Projekt-ID zu ersetzen:

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");
       
}
   
}
}

Nehmen Sie sich zwei Minuten Zeit, um zu sehen, wie der Code die JSON-Datei lädt und eine Tabelle mit einem Schema unter einem Dataset erstellt.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Ein Dataset und eine Tabelle werden in BigQuery erstellt

Json file loaded to BigQuery

Um zu überprüfen, ob das Dataset tatsächlich erstellt wurde, können Sie die BigQuery-Konsole aufrufen. Sie sollten ein neues Dataset und eine Tabelle sehen. Wenn Sie zum Tab „Vorschau“ der Tabelle wechseln, sehen Sie die tatsächlichen Daten:

7d9f7c493acbbf9a.png

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 auf „Löschen“. oben: Dadurch wird das Projekt zum Löschen vorgemerkt.

Weitere Informationen

Lizenz

Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.