Bu codelab hakkında
1. Genel Bakış
BigQuery, Google'ın tümüyle yönetilen, petabayt ölçekli, düşük maliyetli analiz veri ambarıdır. BigQuery NoOps'tur; yönetilecek altyapı yoktur ve veritabanı yöneticisine ihtiyaç duyulmaz. Bu sayede anlamlı analizler bulmak için veri analizine odaklanabilir, bildiğiniz SQL'leri kullanabilir ve kullandıkça öde modelimizden yararlanabilirsiniz.
Bu codelab'de .NET için Google Cloud İstemci Kitaplıkları'nı kullanarak C# ile BigQuery herkese açık veri kümelerini sorgulayacaksınız.
Neler öğreneceksiniz?
- Cloud Shell'i kullanma
- BigQuery API'yi etkinleştirme
- API isteklerinin kimliğini doğrulama
- C# için Google Cloud istemci kitaplığını yükleme
- Shakespeare'in eserlerini sorgulama
- GitHub veri kümesini sorgulama
- Önbelleğe alma ve görüntüleme istatistiklerini ayarlama
Gerekenler
Anket
Bu eğiticiden nasıl yararlanacaksınız?
C# ile ilgili deneyiminizi nasıl değerlendirirsiniz?
Google Cloud Platform hizmetlerinin kullanımıyla ilgili deneyiminizi nasıl değerlendirirsiniz?
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğinizi (genellikle
PROJECT_ID
olarak tanımlanır) belirtmeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır. - Bilginiz olması açısından, bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Cloud Shell'i başlatma
Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
Cloud Shell'i etkinleştirme
- Cloud Console'da, Cloud Shell'i etkinleştir
simgesini tıklayın.
Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara bir ekran görüntülendiyse Devam'ı tıklayın.
Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.
Gereken tüm geliştirme araçları bu sanal makinede yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı tarayıcıyla yapılabilir.
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını göreceksiniz.
- Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list
Komut çıkışı
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. BigQuery API'yi etkinleştirme
BigQuery API, tüm Google Cloud projelerinde varsayılan olarak etkinleştirilmelidir. Bunun doğru olup olmadığını Cloud Shell'de aşağıdaki komutla kontrol edebilirsiniz: BigQuery listesinde yer almanız gerekir:
gcloud services list
BigQuery aşağıdaki listede gösterilir:
NAME TITLE
bigquery-json.googleapis.com BigQuery API
...
BigQuery API etkinleştirilmemişse Cloud Shell'de aşağıdaki komutu kullanarak API'yi etkinleştirebilirsiniz:
gcloud services enable bigquery-json.googleapis.com
4. C# için BigQuery istemci kitaplığını yükleme
Öncelikle BigQuery API örneklerini çalıştırmak için kullanacağınız basit bir C# konsol uygulaması oluşturun.
dotnet new console -n BigQueryDemo
Uygulamanın oluşturulduğunu ve bağımlılıkların çözüldüğünü göreceksiniz:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Sonra, BigQueryDemo
klasörüne gidin:
cd BigQueryDemo
Ardından projeye Google.Cloud.BigQuery.V2
NuGet paketini ekleyin:
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'.
Artık BigQuery API'yi kullanmaya hazırsınız.
5. Shakespeare'in eserlerini sorgulayın
Herkese açık veri kümesi, BigQuery'de depolanan ve herkesin kullanımına sunulan herhangi bir veri kümesidir. Sorgulayabileceğiniz çok sayıda herkese açık veri kümesi vardır. Bunların bazıları da Google tarafından barındırılsa da birçoğu üçüncü taraflarca barındırılır. Herkese Açık Veri Kümeleri sayfasında daha fazla bilgi edinebilirsiniz.
BigQuery, herkese açık veri kümelerine ek olarak sorgulayabileceğiniz sınırlı sayıda örnek tablo sunar. Bu tablolar bigquery-public-data:samples dataset
altında yer alır. Bu tablolardan birinin adı shakespeare.
. Shakespeare'in eserlerine ait kelime dizinini içerir ve her kelimenin her toplulukta kaç kez geçtiğini gösterir.
Bu adımda Shakespeare tablosunu sorgularsınız.
İlk olarak Cloud Shell'in sağ üst tarafından kod düzenleyiciyi açın:
BigQueryDemo
klasörünün içindeki Program.cs
dosyasına gidin ve kodu aşağıdakiyle değiştirin. projectId
kısmını gerçek proje kimliğinizle değiştirdiğinizden emin olun:
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"]}");
}
}
}
}
Kodu incelemek ve tablonun nasıl sorgulandığını görmek için bir iki dakikanızı ayırın.
Cloud Shell'e dönüp uygulamayı çalıştırın:
dotnet run
Kelimelerin ve geçtiği yerlerin listesini göreceksiniz:
hamlet: 5318
kinghenryv: 5104
cymbeline: 4875
troilusandcressida: 4795
kinglear: 4784
kingrichardiii: 4713
2kinghenryvi: 4683
...
6. GitHub veri kümesini sorgulama
BigQuery'yi daha yakından tanımak için şimdi GitHub herkese açık veri kümesi ile ilgili bir sorgu düzenleyeceksiniz. En yaygın kayıt mesajlarını GitHub'da bulabilirsiniz. Ayrıca BigQuery'nin Web konsolunu kullanarak anlık sorguları önizleyebilir ve çalıştırabilirsiniz.
Verilerin nasıl göründüğünü görmek için BigQuery web kullanıcı arayüzünde GitHub veri kümesini açın:
Verilerin nasıl göründüğüne hızlıca göz atmak için Önizle düğmesini kullanın:
BigQueryDemo
klasörünün içindeki Program.cs
dosyasına gidin ve kodu aşağıdakiyle değiştirin. projectId
kısmını gerçek proje kimliğinizle değiştirdiğinizden emin olun:
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"]}");
}
}
}
}
Kodu incelemek ve tablonun en yaygın kaydetme mesajları için nasıl sorgulandığını görmek için bir iki dakikanızı ayırın.
Cloud Shell'e dönüp uygulamayı çalıştırın:
dotnet run
Kaydetme mesajlarının ve geçtiği yerlerin listesini görürsünüz:
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. Önbelleğe alma ve istatistikler
İlk sorgudan sonra BigQuery, sonuçları önbelleğe alır. Bunun sonucunda, sonraki sorgular çok daha kısa sürer. Sorgu seçenekleriyle önbelleğe almayı devre dışı bırakmak mümkündür. BigQuery; oluşturma zamanı, bitiş zamanı, işlenen toplam bayt sayısı gibi sorgularla ilgili bazı istatistikleri de izler.
Bu adımda, önbelleğe almayı devre dışı bırakır ve sorgularla ilgili bazı istatistikleri görüntülersiniz.
BigQueryDemo
klasörünün içindeki Program.cs
dosyasına gidin ve kodu aşağıdakiyle değiştirin. projectId
kısmını gerçek proje kimliğinizle değiştirdiğinizden emin olun:
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}");
}
}
}
Kodla ilgili dikkat edilmesi gereken birkaç nokta: Öncelikle, sorgu seçenekleri sunulup UseQueryCache
politikası yanlış değerine ayarlanarak önbelleğe alma devre dışı bırakılır. İkinci olarak, sorguyla ilgili istatistiklere iş nesnesinden eriştiniz.
Cloud Shell'e dönüp uygulamayı çalıştırın:
dotnet run
Daha önce olduğu gibi, kaydetme mesajlarının ve bunların oluşumlarının listesini görürsünüz. Ayrıca, girişin sonunda sorguyla ilgili bazı istatistikler de göreceksiniz.
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. BigQuery'ye veri yükleme
Kendi verilerinizi sorgulamak istiyorsanız önce verilerinizi BigQuery'ye yüklemeniz gerekir. BigQuery; Google Cloud Storage, diğer Google hizmetleri ve okunabilir bir kaynak gibi birçok kaynaktan veri yüklemeyi destekler. Akış ekleme özelliğini kullanarak da veri akışı sağlayabilirsiniz. BigQuery'ye Veri Yükleme sayfasından daha fazla bilgi edinebilirsiniz.
Bu adımda, Google Cloud Storage'da depolanan bir JSON dosyasını bir BigQuery tablosuna yükleyeceksiniz. JSON dosyası şu konumdadır: gs://cloud-samples-data/bigquery/us-states/us-states.json
JSON dosyasının içeriğini merak ediyorsanız gsutil
komut satırı aracını kullanarak dosyayı Cloud Shell'e indirebilirsiniz:
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.
ABD eyaletlerinin listesini içerdiğini ve her eyaletin ayrı bir satırda bir JSON dokümanı olduğunu görebilirsiniz:
less us-states.json
{"name": "Alabama", "post_abbr": "AL"}
{"name": "Alaska", "post_abbr": "AK"}
...
Bu JSON dosyasını BigQuery'ye yüklemek için BigQueryDemo
klasöründeki Program.cs
dosyasına gidin ve kodu aşağıdaki kodla değiştirin. projectId
kısmını gerçek proje kimliğinizle değiştirdiğinizden emin olun:
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");
}
}
}
Kodun JSON dosyasını nasıl yüklediğini ve veri kümesi altında şema içeren bir tabloyu nasıl oluşturduğunu incelemek için iki dakika ayırın.
Cloud Shell'e dönüp uygulamayı çalıştırın:
dotnet run
BigQuery'de bir veri kümesi ve tablo oluşturulur
Json file loaded to BigQuery
Veri kümesinin gerçekten oluşturulduğunu doğrulamak için BigQuery konsoluna gidebilirsiniz. Yeni bir veri kümesi ve oluşturulmuş tablo göreceksiniz. Tablonun önizleme sekmesine geçerseniz gerçek verileri görebilirsiniz:
9. Tebrikler!
C# dilinin kullanıldığı BigQuery'yi nasıl kullanacağınızı öğrendiniz.
Temizleme
Bu hızlı başlangıçta kullanılan kaynaklar için Google Cloud Platform hesabınızın ücretlendirmesini önlemek amacıyla:
- Cloud Platform Console'a gidin.
- Kapatmak istediğiniz projeyi seçin, ardından "Sil"i tıklayın üstte üstte yer alır: Bu işlem, projeyi silinmek üzere programlar.
Daha Fazla Bilgi
- Google BigQuery: https://cloud.google.com/bigquery/docs/
- Google Cloud Platform'da C#/.NET: https://cloud.google.com/dotnet/
- Google Cloud .NET istemcisi: https://googlecloudplatform.github.io/google-cloud-dotnet/
Lisans
Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.