1. Giriş
BigQuery, analiz için tümüyle yönetilen, petabayt ölçekli ve düşük maliyetli bir kurumsal veri ambarıdır. BigQuery sunucusuzdur. Kümeleri ayarlamanız ve yönetmeniz gerekmez.
BigQuery veri kümesi bir GCP projesinde bulunur ve bir veya daha fazla tablo içerir. Bu veri kümelerini SQL ile sorgulayabilirsiniz.
Bu codelab'de, BigQuery'deki bölümlendirme ve kümelemeyi anlamak için GCP Console'daki BigQuery web kullanıcı arayüzünü kullanacaksınız. BigQuery'nin tablo bölümlendirme ve kümeleme özellikleri, verilerinizi yaygın veri erişim kalıplarına uyacak şekilde yapılandırmanıza yardımcı olur. Belirli bir veri aralığında sorgulama yaparken BigQuery performansını ve maliyetini tam olarak en üst düzeye çıkarmak için bölümleme ve kümeleme çok önemlidir. Bu sayede sorgu başına daha az veri taranır ve budama, sorgu başlangıç zamanından önce belirlenir.
BigQuery hakkında daha fazla bilgi için BigQuery belgelerine bakın.
Neler öğreneceksiniz?
- Bölümlendirilmiş ve kümelenmiş tablolar oluşturma ve sorgulama
- Sorgu performansını bölümlendirilmiş ve kümelenmiş tablolarla karşılaştırma
Gerekenler
Bu laboratuvarı tamamlamak için şunlar gerekir:
- Google Chrome'un en son sürümü
- Google Cloud Platform faturalandırma hesabı
2. Hazırlanma
BigQuery ile çalışmak için bir GCP projesi oluşturmanız veya mevcut bir projeyi seçmeniz gerekir.
Proje oluşturma
Yeni bir proje oluşturmak için aşağıdaki adımları uygulayın:
- Henüz bir Google Hesabınız (Gmail veya Google Apps) yoksa oluşturun.
- Google Cloud Platform Console'da ( console.cloud.google.com) oturum açın ve yeni bir proje oluşturun.
- Projeniz yoksa proje oluştur düğmesini tıklayın:

Aksi takdirde, proje seçimi menüsünden yeni bir proje oluşturun:

- Bir proje adı girin ve Oluştur'u seçin. Proje kimliğinin, tüm Google Cloud projelerinde benzersiz bir ad olduğunu unutmayın.

3. Herkese açık veri kümeleriyle çalışma
BigQuery, BBC News, GitHub depoları, Stack Overflow ve ABD Ulusal Okyanus ve Atmosfer İdaresi (NOAA) veri kümeleri gibi herkese açık veri kümeleriyle çalışmanıza olanak tanır. Bu veri kümelerini BigQuery'ye yüklemeniz gerekmez. BigQuery'de veri kümelerine göz atmak ve bunları sorgulamak için açmanız yeterlidir. Bu codelab'de Stack Overflow herkese açık veri kümesiyle çalışacaksınız.
Stack Overflow veri kümesine göz atma
Stack Overflow veri kümesi; yayınlar, etiketler, rozetler, yorumlar, kullanıcılar ve daha fazlası hakkında bilgiler içerir. BigQuery web arayüzünde Stack Overflow veri kümesine göz atmak için aşağıdaki adımları uygulayın:
- Stack Overflow veri kümesini açın. BigQuery web kullanıcı arayüzü, GCP Console'da açılır ve Stackoverflow veri kümesiyle ilgili bilgileri gösterir.
- Gezinme panelinde bigquery-public-data'yı seçin. Menü, herkese açık veri kümelerini listeleyecek şekilde genişler. Her veri kümesi bir veya daha fazla tablodan oluşur.
- Aşağı kaydırıp stackoverflow'u seçin. Menü genişleyerek Stack Overflow veri kümesindeki tabloları listeler.
- Rozetler tablosunun şemasını görmek için rozetler'i seçin. Tablodaki alanların adlarını not edin.
- Rozetler tablosuyla ilgili örnek verileri görmek için Alan adlarının üzerinde Önizleme'yi tıklayın.
BigQuery'de bulunan tüm herkese açık veri kümeleri hakkında daha fazla bilgi için Google BigQuery Herkese Açık Veri Kümeleri başlıklı makaleyi inceleyin.
Stackoverflow veri kümesini sorgulama
Veri kümesine göz atmak, üzerinde çalıştığınız verileri anlamak için iyi bir yöntemdir ancak BigQuery'nin gerçek gücü veri kümelerini sorgularken ortaya çıkar. Bu bölümde, BigQuery sorgularını nasıl çalıştıracağınız açıklanmaktadır. Bu noktada SQL bilmeniz gerekmez. Aşağıdaki sorguları kopyalayıp yapıştırabilirsiniz.
Sorgu çalıştırmak için aşağıdaki adımları tamamlayın:
- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.
- Sorgu düzenleyici metin alanına aşağıdaki SQL sorgusunu kopyalayıp yapıştırın. BigQuery, sorguyu doğrular ve web kullanıcı arayüzü, söz diziminin geçerli olduğunu belirtmek için metin alanının altında yeşil bir onay işareti gösterir.
SELECT EXTRACT(YEAR FROM creation_date) AS creation_year, COUNT(*) AS total_posts FROM `bigquery-public-data.stackoverflow.posts_questions` GROUP BY creation_year ORDER BY total_posts DESC LIMIT 10
- Çalıştır'ı seçin. Sorgu, her yıl yayınlanan Stack Overflow gönderilerinin veya sorularının sayısını döndürür.
4. Yeni tablo oluşturma
Önceki bölümde, BigQuery'nin kullanımınıza sunduğu herkese açık veri kümelerini sorguladınız. Bu bölümde, mevcut bir tablodan BigQuery'de yeni bir tablo oluşturacaksınız. Stack Overflow ortak veri kümesi posts_questions tablosundan örneklenen verileri içeren yeni bir tablo oluşturacak ve ardından tabloyu sorgulayacaksınız.
Yeni veri kümesi oluşturma
Tablo verilerini oluşturup BigQuery'ye yüklemek için önce aşağıdaki adımları uygulayarak verileri tutacak bir BigQuery veri kümesi oluşturun:
- GCP Console gezinme panelinde, kurulumun bir parçası olarak oluşturulan proje adını seçin.
- Sağ taraftaki ayrıntılar panelinde Veri kümesi oluştur'u seçin.

- Veri kümesi oluştur iletişim kutusunda Veri kümesi kimliği için
stackoverflowyazın. Diğer varsayılan ayarları değiştirmeden Tamam'ı tıklayın.

2018 StackOverflow Yayınlarını İçeren Yeni Bir Tablo Oluşturma
BigQuery veri kümesi oluşturduğunuza göre BigQuery'de yeni bir tablo oluşturabilirsiniz. Mevcut bir tablodaki verileri kullanarak tablo oluşturmak için aşağıdaki adımları tamamlayarak 2018 Stack Overflow gönderileri veri kümesini sorgulayıp sonuçları yeni bir tabloya yazacaksınız:
- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.

- Sorgu düzenleyici metin alanında, yeni bir tablo oluşturmak için aşağıdaki SQL sorgusunu kopyalayıp yapıştırın. Bu sorgu bir DDL ifadesidir.
CREATE OR REPLACE TABLE `stackoverflow.questions_2018` AS SELECT id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count, tags FROM `bigquery-public-data.stackoverflow.posts_questions` WHERE creation_date BETWEEN '2018-01-01' AND '2019-01-01';
- Çalıştır'ı seçin. Sorgu, projenizdeki
stackoverflowveri kümesinde, BigQuery Stack Overflow veri kümesindebigquery-public-data.stackoverflow.posts_questionssorgu çalıştırmanın sonucu olan verileri içeren yeni bir tabloquestions_2018oluşturur.
2018 Stack Overflow Gönderileriyle Yeni Tabloya Sorgu Uygulama
BigQuery tablosu oluşturduğunuza göre artık soru ve başlıkların yanı sıra yanıt, yorum, görüntüleme ve favori sayısı gibi birkaç istatistikle birlikte Stack Overflow yayınlarını döndüren bir sorgu çalıştırabiliriz. Aşağıdaki adımları tamamlayın:
- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.
- Sorgu düzenleyici metin alanına aşağıdaki SQL sorgusunu kopyalayıp yapıştırın.
SELECT id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count FROM `stackoverflow.questions_2018` WHERE creation_date BETWEEN '2018-01-01' AND '2018-02-01' AND tags = 'android';
- Çalıştır'ı seçin. Sorgu, 2018 yılının Ocak ayında oluşturulan ve
androidolarak etiketlenen Stack Overflow sorularını, soru ve birkaç istatistikle birlikte döndürür. - BigQuery, varsayılan olarak sorgu sonuçlarını önbelleğe alır. Aynı sorguyu çalıştırdığınızda BigQuery'nin sonuçları önbellekten döndürdüğü için sonuçları döndürmek için çok daha az zaman harcadığını görürsünüz.
- Aynı sorguyu tekrar çalıştırın ancak bu kez BigQuery önbelleğe alma özelliği devre dışı bırakılmış olsun. Bölümlenmiş ve kümelenmiş tablolarla performans karşılaştırmasında adil olmak için laboratuvarın geri kalanında önbelleği devre dışı bırakacağız. Bu tablolar sonraki bölümlerde çalıştırılacaktır. Sorgu düzenleyicisinde Diğer'i tıklayın ve Sorgu ayarları'nı seçin.

- Önbellek tercihi bölümünde Önbelleğe alınmış sonuçları kullan'ın işaretini kaldırın.

- Sorgu sonuçlarında, sorgunun tamamlanması için geçen süre ve sonuçları elde etmek üzere işlenen veri hacmi gösterilir.

5. Bölümlendirilmiş Tablo Oluşturma ve Sorgulama
Önceki bölümde, Stack Overflow herkese açık veri kümesini kullanarak posts_questions tablosundaki verilerle BigQuery'de yeni bir tablo oluşturmuştunuz. Bu veri kümesini, önbelleğe alma devre dışı bırakılmış şekilde sorguladık ve sorgu performansını gözlemledik. Bu bölümde, aynı Stack Overflow herkese açık veri kümesinin posts_questions tablosundan yeni bir bölümlendirilmiş tablo oluşturacak ve sorgu performansını gözlemleyeceksiniz.
Bölümlendirilmiş tablo, verilerinizi yönetmeyi ve sorgulamayı kolaylaştıran bölümler adı verilen segmentlere ayrılmış özel bir tablodur. Genellikle büyük tabloları, veri kullanımı süresini, TIMESTAMP/DATE sütununu veya INTEGER sütununu kullanarak daha küçük bölümlere ayırabilirsiniz. DATE ile bölümlendirilmiş bir tablo oluşturacağız.
Bölümlendirilmiş tablolar hakkında daha fazla bilgiyi burada bulabilirsiniz.
2018 StackOverflow Gönderileriyle Yeni Bir Bölümlendirilmiş Tablo Oluşturma
Mevcut bir tablodaki veya sorgudaki verilerle bölümlendirilmiş bir tablo oluşturmak için 2018 Stackoverflow gönderileri veri kümesini sorgulayıp sonuçları yeni bir tabloya yazacaksınız. Bunun için aşağıdaki adımları tamamlayın:

- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.

- Sorgu düzenleyici metin alanında, yeni bir tablo oluşturmak için aşağıdaki SQL sorgusunu kopyalayıp yapıştırın. Bu sorgu bir DDL ifadesidir.
CREATE OR REPLACE TABLE `stackoverflow.questions_2018_partitioned` PARTITION BY DATE(creation_date) AS SELECT id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count, tags FROM `bigquery-public-data.stackoverflow.posts_questions` WHERE creation_date BETWEEN '2018-01-01' AND '2019-01-01';
- Çalıştır'ı seçin. Sorgu, projenizdeki
stackoverflowveri kümesindequestions_2018_partitionedadlı yeni bir tablo oluşturur. Bu tablo, BigQuery Stack Overflow veri kümesindebigquery-public-data.stackoverflow.posts_questionssorgu çalıştırmanın sonucu olan verileri içerir.
2018 Stack Overflow Gönderileriyle Bölümlendirilmiş Tabloyu Sorgulama
BigQuery bölümleme tablosunu oluşturduğunuza göre, bu kez bölümleme tablosunda aynı sorguyu çalıştırarak Stack Overflow yayınlarını soru ve başlıklarla birlikte yanıt, yorum, görüntüleme ve favori sayısı gibi birkaç istatistikle döndürelim. Aşağıdaki adımları tamamlayın:
- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.
- Sorgu düzenleyici metin alanına aşağıdaki SQL sorgusunu kopyalayıp yapıştırın.
SELECT id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count FROM `stackoverflow.questions_2018_partitioned` WHERE creation_date BETWEEN '2018-01-01' AND '2018-02-01' AND tags = 'android';
- BigQuery önbelleği devre dışı bırakılmışken Çalıştır'ı seçin (BigQuery önbelleğini devre dışı bırakma hakkında bilgi için önceki bölüme bakın). Sorgu, 2018 yılının Ocak ayında oluşturulan ve
androidolarak etiketlenen Stack Overflow sorularını, soru ve birkaç istatistikle birlikte döndürür. - Sorgu sonuçlarında, sorgunun tamamlanması için geçen süre ve sonuçları elde etmek üzere işlenen veri hacmi gösterilir.

BigQuery, bölümleri temizlediği (yani yalnızca gerekli bölümleri taradığı) için bölümlendirilmiş tablo içeren sorgunun performansının, bölümlendirilmemiş tablo içeren sorgunun performansından daha iyi olduğunu göreceksiniz. Bu sayede daha az veri işlenir ve sorgu daha hızlı çalışır. Bu, sorgu maliyetlerini ve sorgu performansını optimize eder.
6. Kümelenmiş Tablo Oluşturma ve Sorgulama
Önceki bölümde, Stack Overflow herkese açık veri kümesindeki posts_questions tablosundan alınan verilerle BigQuery'de bölümlendirilmiş bir tablo oluşturmuştunuz. Bu tabloyu önbelleğe alma devre dışı bırakılmış şekilde sorguladık ve sorgu performansını hem bölümlendirilmemiş hem de bölümlendirilmiş tablolarla gözlemledik. Bu bölümde, aynı Stack Overflow herkese açık veri kümesinin posts_questions tablosundan yeni bir kümelenmiş tablo oluşturacak ve sorgu performansını gözlemleyeceksiniz.
BigQuery'de bir tablo kümelendiğinde tablo verileri, tablonun şemasındaki bir veya daha fazla sütunun içeriğine göre otomatik olarak düzenlenir. Belirttiğiniz sütunlar, ilgili verileri birlikte yerleştirmek için kullanılır. Veriler kümelenmiş bir tabloya yazıldığında BigQuery, verileri kümeleme sütunlarındaki değerleri kullanarak sıralar. Bu değerler, verileri BigQuery depolama alanında birden fazla blok halinde düzenlemek için kullanılır. Kümelenmiş sütunların sırası, verilerin sıralama düzenini belirler. Bir tabloya veya belirli bir bölüme yeni veriler eklendiğinde BigQuery, tablonun veya bölümün sıralama özelliğini geri yüklemek için arka planda otomatik olarak yeniden kümeleme gerçekleştirir.
Kümelenmiş tablolarla çalışma hakkında daha fazla bilgiyi burada bulabilirsiniz.
2018 Stack Overflow Gönderileriyle Yeni Bir Kümelenmiş Tablo Oluşturma
Bu bölümde, sorgu erişim kalıbına göre creation_date üzerinde bölümlendirilmiş ve tags sütununda kümelenmiş yeni bir tablo oluşturacaksınız. Mevcut bir tablodaki veya sorgudaki verilerle kümelenmiş bir tablo oluşturmak için aşağıdaki adımları uygulayarak 2018 Stack Overflow gönderileri tablosunu sorgulayıp sonuçları yeni bir tabloya yazacaksınız:

- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.

- Sorgu düzenleyici metin alanında, yeni bir tablo oluşturmak için aşağıdaki SQL sorgusunu kopyalayıp yapıştırın. Bu sorgu bir DDL ifadesidir.
#standardSQL CREATE OR REPLACE TABLE `stackoverflow.questions_2018_clustered` PARTITION BY DATE(creation_date) CLUSTER BY tags AS SELECT id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count, tags FROM `bigquery-public-data.stackoverflow.posts_questions` WHERE creation_date BETWEEN '2018-01-01' AND '2019-01-01';
- Çalıştır'ı seçin. Sorgu, projenizdeki
stackoverflowveri kümesindequestions_2018_clusteredadlı yeni bir tablo oluşturur. Bu tablo, BigQuery Stack Overflow tablosundabigquery-public-data.stackoverflow.posts_questionssorgu çalıştırılmasıyla elde edilen verileri içerir. Yeni tablo, creation_date üzerinde bölümlendirilmiş ve etiketler sütununda kümelenmiştir.
2018 Stack Overflow Yayınlarını İçeren Kümelenmiş Tabloyu Sorgulama
BigQuery kümelenmiş bir tablo oluşturduğunuza göre, bu kez bölümleme ve kümeleme uygulanmış tabloda aynı sorguyu tekrar çalıştırarak Stack Overflow'daki soruları ve başlıkları içeren gönderileri, yanıt sayısı, yorum sayısı, görüntüleme sayısı ve favori sayısı gibi diğer bazı istatistiklerle birlikte döndürelim. Aşağıdaki adımları tamamlayın:
- GCP Console'un sağ üst tarafına yakın yerde bulunan Yeni sorgu oluştur'u seçin.
- Sorgu düzenleyici metin alanına aşağıdaki SQL sorgusunu kopyalayıp yapıştırın.
SELECT id, title, accepted_answer_id, creation_date, answer_count , comment_count , favorite_count, view_count FROM `stackoverflow.questions_2018_clustered` WHERE creation_date BETWEEN '2018-01-01' AND '2018-02-01' AND tags = 'android';
- BigQuery önbelleği devre dışı bırakılmışken Çalıştır'ı seçin (BigQuery önbelleğini devre dışı bırakma hakkında bilgi için önceki bölüme bakın). Sorgu, 2018 yılının Ocak ayında oluşturulan ve
androidolarak etiketlenen Stack Overflow sorularını, soru ve birkaç istatistikle birlikte döndürür. - Sorgu sonuçlarında, sorgunun tamamlanması için geçen süre ve sonuçları elde etmek üzere işlenen veri hacmi gösterilir.

Bölümlendirilmiş ve kümelenmiş bir tabloda sorgu, bölümlendirilmiş bir tabloya veya bölümlendirilmemiş bir tabloya kıyasla daha az veri taradı. Verilerin bölümlendirme ve kümeleme ile düzenlenme şekli, yuva çalışanları tarafından taranan veri miktarını en aza indirerek sorgu performansını artırır ve maliyetleri optimize eder.
7. Temizleme
stackoverflow veri kümenizle çalışmaya devam etmeyi planlamıyorsanız bu veri kümesini ve bu codelab için oluşturduğunuz projeyi silmeniz gerekir.
BigQuery veri kümesini silme
BigQuery veri kümesini silmek için aşağıdaki adımları uygulayın:
- BigQuery'deki sol gezinme panelinden stackoverflow veri kümesini seçin .
- Ayrıntılar panelinde Veri kümesini sil'i seçin.

- Veri kümesini sil iletişim kutusunda stackoverflow yazın ve veri kümesini silmek istediğinizi onaylamak için Sil'i seçin.
Projeyi silme
Bu codelab için oluşturduğunuz GCP projesini silmek üzere aşağıdaki adımları uygulayın:
- GCP gezinme menüsünde IAM & Admin'i (IAM ve Yönetici) seçin.
- Gezinme panelinde Ayarlar'ı seçin.
- Ayrıntılar panelinde, mevcut projenizin bu codelab için oluşturduğunuz proje olduğunu onaylayın ve Kapat'ı seçin.
- Projeyi kapat iletişim kutusunda projenizin proje kimliğini (proje adı değil) girin ve onaylamak için Kapat'ı seçin.
Tebrikler! Bu videoda
- Mevcut tablolardan yeni bir tablo oluşturmak için BigQuery web kullanıcı arayüzünü kullanma
- Bölümlendirilmiş ve kümelenmiş tablolar oluşturma ve sorgulama
- Bölümlendirme ve kümeleme, sorgu performansını ve maliyetleri nasıl optimize eder?
Veri kümeleriyle çalışmak için kümeleri ayarlamanız veya yönetmeniz gerekmediğini unutmayın.