Menggunakan BigQuery dengan C#

Menggunakan BigQuery dengan C#

Tentang codelab ini

subjectTerakhir diperbarui Jun 26, 2023
account_circleDitulis oleh Mete Atamel

1. Ringkasan

BigQuery adalah data warehouse analisis berharga terjangkau yang terkelola sepenuhnya dan berskala petabyte dari Google. BigQuery dalam kondisi NoOps. Tidak ada infrastruktur yang harus dikelola dan Anda tidak memerlukan administrator database. Dengan begitu, Anda dapat berfokus pada analisis data untuk menemukan insight yang bermakna, menggunakan SQL yang sudah dikenal, dan memanfaatkan model bayar sesuai penggunaan.

Dalam codelab ini, Anda akan menggunakan Library Klien Google Cloud untuk .NET guna mengkueri set data publik BigQuery dengan C#.

Yang akan Anda pelajari

  • Cara menggunakan Cloud Shell
  • Cara mengaktifkan BigQuery API
  • Cara Mengautentikasi permintaan API
  • Cara menginstal library klien Google Cloud untuk C#
  • Cara membuat kueri karya Shakespeare
  • Cara membuat kueri set data GitHub
  • Cara menyesuaikan statistik tampilan dan penyimpanan cache

Yang Anda butuhkan

  • Project Google Cloud Platform
  • Browser, seperti Chrome atau Firefox
  • Pemahaman dalam menggunakan C#

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Bagaimana Anda menilai pengalaman Anda dengan C#?

Bagaimana penilaian Anda terhadap pengalaman menggunakan layanan Google Cloud Platform?

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

295004821bab6a87.pngS

37d264871000675d.png

96d86d3d5655cdbe.pngS

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.

d95252b003979716.png

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

7833d5e1c5d18f54.pngS

Mesin virtual ini dimuat dengan semua alat pengembangan yang diperlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

3. Mengaktifkan BigQuery API

BigQuery API harus diaktifkan secara default di semua project Google Cloud. Anda dapat memeriksa apakah hal ini benar dengan perintah berikut di Cloud Shell: BigQuery akan tercantum:

gcloud services list

Anda akan melihat BigQuery tercantum:

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

Jika BigQuery API tidak diaktifkan, Anda dapat menggunakan perintah berikut di Cloud Shell untuk mengaktifkannya:

gcloud services enable bigquery-json.googleapis.com

4. Menginstal library klien BigQuery untuk C#

Pertama, buat aplikasi konsol C# sederhana yang akan Anda gunakan untuk menjalankan contoh BigQuery API.

dotnet new console -n BigQueryDemo

Anda akan melihat aplikasi yang dibuat dan dependensi di-resolve:

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

Selanjutnya, buka folder BigQueryDemo:

cd BigQueryDemo

Dan tambahkan paket NuGet Google.Cloud.BigQuery.V2 ke project:

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

Sekarang, Anda siap untuk menggunakan BigQuery API.

5. Mengkueri karya Shakespeare

{i>Dataset<i} publik adalah {i>dataset<i} yang disimpan di BigQuery dan tersedia untuk umum. Ada banyak {i>dataset<i} publik lain yang tersedia untuk Anda kueri, beberapa di antaranya juga di-{i>host<i} oleh Google, tetapi banyak lagi yang di-{i>host <i}oleh pihak ketiga. Anda dapat membaca lebih lanjut di halaman Set Data Publik.

Selain set data publik, BigQuery menyediakan beberapa contoh tabel yang dapat Anda kueri. Tabel ini terdapat di bigquery-public-data:samples dataset. Salah satu tabel tersebut disebut shakespeare. Tabel ini berisi indeks kata karya Shakespeare, yang memberikan berapa kali setiap kata muncul di setiap korpus.

Pada langkah ini, Anda akan melakukan kueri tabel Shakespeare.

Pertama, buka editor kode dari sisi kanan atas Cloud Shell:

fd3fc1303e63572.png

Buka file Program.cs di dalam folder BigQueryDemo dan ganti kode dengan kode berikut. Pastikan Anda mengganti projectId dengan ID project Anda yang sebenarnya:

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

Luangkan waktu satu atau dua menit untuk mempelajari kode dan lihat bagaimana tabel dikueri.

Kembali ke Cloud Shell, jalankan aplikasi:

dotnet run

Anda akan melihat daftar kata dan kemunculannya:

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

6. Mengkueri set data GitHub

Agar dapat lebih memahami BigQuery, sekarang Anda akan mengeluarkan kueri terhadap set data publik GitHub. Anda akan menemukan pesan commit yang paling umum di GitHub. Anda juga akan menggunakan konsol Web BigQuery untuk melakukan pratinjau dan menjalankan kueri ad-hoc.

Untuk melihat tampilan data, buka set data GitHub di UI web BigQuery:

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

Untuk melihat pratinjau cepat dari tampilan data, gunakan tombol Pratinjau:

f706bfe3dfcbd267.png

Buka file Program.cs di dalam folder BigQueryDemo dan ganti kode dengan kode berikut. Pastikan Anda mengganti projectId dengan ID project Anda yang sebenarnya:

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

Luangkan waktu satu atau dua menit untuk mempelajari kode dan lihat bagaimana tabel dikueri untuk pesan commit yang paling umum.

Kembali ke Cloud Shell, jalankan aplikasi:

dotnet run

Anda akan melihat daftar pesan commit dan kemunculannya:

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. Cache dan statistik

Setelah kueri awal, BigQuery akan meng-cache hasilnya. Akibatnya, kueri berikutnya membutuhkan waktu yang jauh lebih sedikit. Anda dapat menonaktifkan penyimpanan cache dengan opsi kueri. BigQuery juga melacak beberapa statistik tentang kueri seperti waktu pembuatan, waktu berakhir, total byte yang diproses.

Pada langkah ini, Anda akan menonaktifkan penyimpanan dalam cache dan juga menampilkan beberapa statistik tentang kueri.

Buka file Program.cs di dalam folder BigQueryDemo dan ganti kode dengan kode berikut. Pastikan Anda mengganti projectId dengan ID project Anda yang sebenarnya:

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

Beberapa hal yang perlu diperhatikan tentang kode. Pertama, penyimpanan cache dinonaktifkan dengan memperkenalkan opsi kueri dan menyetel UseQueryCache ke salah (false). Kedua, Anda mengakses statistik tentang kueri dari objek tugas.

Kembali ke Cloud Shell, jalankan aplikasi:

dotnet run

Seperti sebelumnya, Anda akan melihat daftar pesan commit dan kemunculannya. Selain itu, Anda juga akan melihat beberapa statistik tentang kueri di akhir

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. Memuat data ke BigQuery.

Jika ingin membuat kueri data sendiri, Anda harus memuat data Anda ke BigQuery terlebih dahulu. BigQuery mendukung pemuatan data dari banyak sumber seperti Google Cloud Storage, layanan Google lainnya, sumber yang dapat dibaca. Anda bahkan dapat melakukan streaming data menggunakan streaming insert. Anda dapat membaca selengkapnya di halaman Memuat Data ke BigQuery.

Pada langkah ini, Anda akan memuat file JSON yang disimpan di Google Cloud Storage ke dalam tabel BigQuery. File JSON terletak di gs://cloud-samples-data/bigquery/us-states/us-states.json

Jika ingin tahu tentang konten file JSON, Anda dapat menggunakan alat command line gsutil untuk mendownloadnya di 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.

Anda dapat melihat bahwa file ini berisi daftar negara bagian Amerika Serikat dan setiap negara bagian adalah dokumen JSON pada baris terpisah:

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

Untuk memuat file JSON ini ke BigQuery, buka file Program.cs di dalam folder BigQueryDemo dan ganti kode dengan kode berikut. Pastikan Anda mengganti projectId dengan ID project Anda yang sebenarnya:

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

Luangkan waktu dua menit untuk mempelajari bagaimana kode memuat file JSON dan membuat tabel dengan skema di bawah set data.

Kembali ke Cloud Shell, jalankan aplikasi:

dotnet run

Set data dan tabel dibuat di BigQuery

Json file loaded to BigQuery

Untuk memverifikasi bahwa {i>dataset<i} benar-benar dibuat, Anda dapat mengunjungi konsol BigQuery. Anda akan melihat set data baru dan tabel dibuat. Jika Anda beralih ke tab pratinjau pada tabel, Anda dapat melihat data sebenarnya:

7d9f7c493acbbf9a.pngS

9. Selamat!

Anda telah mempelajari cara menggunakan BigQuery dengan C#!

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Platform Anda untuk resource yang digunakan di panduan memulai ini:

  • Buka Cloud Platform Console.
  • Pilih project yang ingin dinonaktifkan, lalu klik 'Delete' di bagian atas: tindakan ini menjadwalkan penghapusan project.

Pelajari Lebih Lanjut

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.