Informazioni su questo codelab
1. Panoramica
BigQuery è il data warehouse di analisi di Google completamente gestito, a basso costo e con capacità di petabyte. BigQuery è NoOps: non c'è alcuna infrastruttura da gestire e non hai bisogno di un amministratore di database, quindi puoi concentrarti sull'analisi dei dati per trovare insight significativi, utilizzare un ambiente SQL familiare e sfruttare il nostro modello di pagamento a consumo.
In questo codelab, utilizzerai le librerie client di Google Cloud per .NET per eseguire query su set di dati pubblici BigQuery con C#.
Cosa imparerai a fare
- Come utilizzare Cloud Shell
- Come abilitare l'API BigQuery
- Come autenticare le richieste API
- Come installare la libreria client di Google Cloud per C#
- Come interrogare le opere di Shakespeare
- Come eseguire query sul set di dati GitHub
- Come regolare la memorizzazione nella cache e la visualizzazione delle statistiche
Che cosa ti serve
Sondaggio
Come utilizzerai questo tutorial?
Come valuteresti la tua esperienza con C#?
Come giudichi la tua esperienza di utilizzo dei servizi della piattaforma Google Cloud?
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come
PROJECT_ID
). Se l'ID generato non ti soddisfa, potresti generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto. - Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. L'esecuzione di questo codelab non ha alcun costo. Per arrestare le risorse ed evitare di incorrere in fatturazione dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare il progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
Avvia Cloud Shell
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Attiva Cloud Shell
- Dalla console Cloud, fai clic su Attiva Cloud Shell
.
Se è la prima volta che avvii Cloud Shell, ti verrà mostrata una schermata intermedia che descrive di cosa si tratta. Se ti è stata presentata una schermata intermedia, fai clic su Continua.
Il provisioning e la connessione a Cloud Shell dovrebbero richiedere solo qualche istante.
Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, del lavoro in questo codelab può essere svolto con un browser.
Una volta stabilita la connessione a Cloud Shell, dovresti vedere che hai eseguito l'autenticazione e che il progetto è impostato sul tuo ID progetto.
- Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
Output comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Esegui questo comando in Cloud Shell per confermare che il comando gcloud è a conoscenza del tuo progetto:
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
In caso contrario, puoi impostarlo con questo comando:
gcloud config set project <PROJECT_ID>
Output comando
Updated property [core/project].
3. Abilita l'API BigQuery
L'API BigQuery deve essere abilitata per impostazione predefinita in tutti i progetti Google Cloud. Per verificare se è vero, usa il comando seguente in Cloud Shell: Dovresti essere nell'elenco BigQuery:
gcloud services list
BigQuery dovrebbe essere elencato:
NAME TITLE
bigquery-json.googleapis.com BigQuery API
...
Se l'API BigQuery non è abilitata, puoi utilizzare il comando seguente in Cloud Shell per abilitarla:
gcloud services enable bigquery-json.googleapis.com
4. Installa la libreria client di BigQuery per C#
Innanzitutto, crea una semplice applicazione console C# che utilizzerai per eseguire gli esempi dell'API BigQuery.
dotnet new console -n BigQueryDemo
Dovresti vedere l'applicazione creata e le dipendenze risolte:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Quindi, vai alla cartella BigQueryDemo
:
cd BigQueryDemo
E aggiungi il pacchetto NuGet Google.Cloud.BigQuery.V2
al progetto:
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'.
Ora è tutto pronto per utilizzare l'API BigQuery.
5. Interroga le opere di Shakespeare
Per set di dati pubblico si intende qualsiasi set di dati archiviato in BigQuery e reso disponibile al pubblico. Esistono molti altri set di dati pubblici su cui eseguire le query, alcuni dei quali sono anch'essi ospitati da Google, ma molti altri sono ospitati da terze parti. Per saperne di più, consulta la pagina Set di dati pubblici.
Oltre ai set di dati pubblici, BigQuery fornisce un numero limitato di tabelle di esempio su cui puoi eseguire query. Queste tabelle sono contenute in bigquery-public-data:samples dataset
. Una di queste tabelle è chiamata shakespeare.
. Contiene un indice di parole delle opere di Shakespeare, che indica il numero di volte in cui ogni parola compare in ciascun corpus.
In questo passaggio eseguirai una query sulla tabella Shakespeare.
Innanzitutto, apri l'editor di codice dall'angolo in alto a destra di Cloud Shell:
Vai al file Program.cs
all'interno della cartella BigQueryDemo
e sostituisci il codice con il codice seguente. Assicurati di sostituire projectId
con l'ID progetto effettivo:
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"]}");
}
}
}
}
Prenditi un minuto o due per studiare il codice e vedere come vengono eseguite le query sulla tabella.
Torna in Cloud Shell ed esegui l'app:
dotnet run
Viene visualizzato un elenco di parole con le relative occorrenze:
hamlet: 5318
kinghenryv: 5104
cymbeline: 4875
troilusandcressida: 4795
kinglear: 4784
kingrichardiii: 4713
2kinghenryvi: 4683
...
6. esegui una query sul set di dati GitHub
Per acquisire familiarità con BigQuery, ora eseguirai una query sul set di dati pubblico GitHub. Troverai i messaggi di commit più comuni su GitHub. Utilizzerai anche la console web di BigQuery per visualizzare in anteprima ed eseguire query ad hoc.
Per vedere l'aspetto dei dati, apri il set di dati GitHub nella UI web di BigQuery:
Per visualizzare un'anteprima rapida dell'aspetto dei dati, utilizza il pulsante Anteprima:
Vai al file Program.cs
all'interno della cartella BigQueryDemo
e sostituisci il codice con il codice seguente. Assicurati di sostituire projectId
con l'ID progetto effettivo:
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"]}");
}
}
}
}
Prenditi un minuto o due per studiare il codice e vedere come vengono eseguite query sulla tabella per i messaggi di commit più comuni.
Torna in Cloud Shell ed esegui l'app:
dotnet run
Dovresti vedere un elenco di messaggi di commit e le relative occorrenze:
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. Memorizzazione nella cache e statistica
Dopo la query iniziale, BigQuery memorizza i risultati nella cache. Di conseguenza, le query successive richiedono molto meno tempo. È possibile disabilitare la memorizzazione nella cache usando le opzioni di query. BigQuery tiene anche traccia di alcune statistiche sulle query, come ora di creazione, ora di fine e byte totali elaborati.
In questo passaggio disattiverai la memorizzazione nella cache e verranno visualizzate anche alcune statistiche sulle query.
Vai al file Program.cs
all'interno della cartella BigQueryDemo
e sostituisci il codice con il codice seguente. Assicurati di sostituire projectId
con l'ID progetto effettivo:
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}");
}
}
}
Due aspetti da considerare riguardo al codice. Innanzitutto, la memorizzazione nella cache viene disattivata introducendo opzioni di query e impostando UseQueryCache
su false. In secondo luogo, hai eseguito l'accesso alle statistiche sulla query dall'oggetto job.
Torna in Cloud Shell ed esegui l'app:
dotnet run
Come prima, dovresti vedere un elenco dei messaggi di commit e delle relative occorrenze. Alla fine, dovresti vedere anche alcune statistiche sulla query
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. Caricamento di dati in BigQuery
Se vuoi eseguire query sui tuoi dati, devi prima caricarli in BigQuery. BigQuery supporta il caricamento di dati da molte origini, come Google Cloud Storage, altri servizi Google e un'origine leggibile. Puoi anche trasmettere i flussi di dati utilizzando gli inserimenti di flussi di dati. Per saperne di più, consulta la pagina Caricamento di dati in BigQuery.
In questo passaggio, caricherai un file JSON archiviato su Google Cloud Storage in una tabella BigQuery. Il file JSON si trova nel percorso gs://cloud-samples-data/bigquery/us-states/us-states.json
Se ti interessano i contenuti del file JSON, puoi utilizzare lo strumento a riga di comando gsutil
per scaricarlo in Cloud Shell:
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.
Puoi vedere che contiene l'elenco degli stati degli Stati Uniti e ogni stato è un documento JSON su una riga separata:
less us-states.json
{"name": "Alabama", "post_abbr": "AL"}
{"name": "Alaska", "post_abbr": "AK"}
...
Per caricare questo file JSON in BigQuery, vai al file Program.cs
all'interno della cartella BigQueryDemo
e sostituisci il codice con il codice seguente. Assicurati di sostituire projectId
con l'ID progetto effettivo:
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");
}
}
}
Prenditi qualche minuto per studiare in che modo il codice carica il file JSON e crea una tabella con uno schema in un set di dati.
Torna in Cloud Shell ed esegui l'app:
dotnet run
In BigQuery vengono creati un set di dati e una tabella
Json file loaded to BigQuery
Per verificare che il set di dati sia stato creato correttamente, puoi andare alla console BigQuery. Dovresti vedere un nuovo set di dati e una tabella creati. Se passi alla scheda Anteprima della tabella, puoi visualizzare i dati effettivi:
9. Complimenti!
Hai imparato a utilizzare BigQuery con C#.
Esegui la pulizia
Per evitare che al tuo account Google Cloud Platform vengano addebitate le risorse utilizzate in questa guida rapida, procedi come segue.
- Vai alla console di Cloud Platform.
- Seleziona il progetto che vuoi chiudere e fai clic su "Elimina". in alto: in questo modo viene pianificata l'eliminazione del progetto.
Scopri di più
- Google BigQuery: https://cloud.google.com/bigquery/docs/
- C#/.NET su Google Cloud: https://cloud.google.com/dotnet/
- Client Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 2.0 Generic.