BigQuery'de Wikipedia veri kümesini sorgulama

1. Genel Bakış

BigQuery, Google'ın tümüyle yönetilen, NoOps özellikli, düşük maliyetli analitik veritabanıdır. BigQuery ile terabaytlarca veriyi herhangi bir altyapıyı yönetmenize gerek kalmadan ya da bir veritabanı yöneticisine ihtiyaç duymadan sorgulayabilirsiniz. BigQuery, bildiğiniz SQL'i kullanır ve kullandıkça öde modelinin avantajlarından yararlanabilir. BigQuery, anlamlı bulgulara ulaşabilmeniz için veri analizine odaklanmanıza olanak tanır.

Bu codelab'de, BigQuery'yi kullanarak Wikipedia veri kümesini keşfedeceksiniz.

Neler öğreneceksiniz?

  • BigQuery'yi kullanma
  • Gerçek dünyadan bir veri kümesini BigQuery'ye yükleme
  • Büyük bir veri kümesi hakkında bilgi edinmek için sorgu yazma

İhtiyacınız olanlar

Anket

Bu eğitimi nasıl kullanacaksınız?

Yalnızca okuyun Okuyun ve alıştırmaları tamamlayın

Google Cloud ile ilgili deneyiminizi nasıl değerlendirirsiniz?

Başlangıç Orta İleri

2. Kurulum ve şartlar

BigQuery'yi etkinleştirme

Google Hesabınız yoksa hesap oluşturmanız gerekir.

  1. Google Cloud Console'da oturum açın ve BigQuery'ye gidin. Ayrıca, tarayıcınıza aşağıdaki URL'yi girerek BigQuery web kullanıcı arayüzünü doğrudan açabilirsiniz.
https://console.cloud.google.com/bigquery
  1. Hizmet şartlarını kabul edin.
  2. BigQuery'yi kullanabilmek için bir proje oluşturmanız gerekir. Yeni projenizi oluşturmak için talimatları uygulayın.

Bir proje adı seçin ve proje kimliğini not edin. 1884405a64ce5765.png

Proje kimliği, tüm Google Cloud projelerinde benzersiz bir addır. Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.

Bu codelab'de, BigQuery korumalı alan sınırları dahilindeki BigQuery kaynakları kullanılır. Faturalandırma hesabı gerekmez. Daha sonra korumalı alan sınırlarını kaldırmak isterseniz Google Cloud ücretsiz denemesine kaydolarak bir faturalandırma hesabı ekleyebilirsiniz.

Wikipedia veri kümesini bir sonraki bölümde yükleyeceksiniz.

3. Veri kümesi oluşturma

Öncelikle projede yeni bir veri kümesi oluşturun. Veri kümesi birden fazla tablodan oluşur.

  1. Veri kümesi oluşturmak için kaynaklar bölmesinde proje adını, ardından Veri kümesi oluştur'u tıklayın:

4a5983b4dc299705.png

  1. Veri kümesi kimliği olarak lab değerini girin:

a592b5b9be20fdec.png

  1. Boş bir veri kümesi oluşturmak için Veri kümesi oluştur'u tıklayın.

4. bq komut satırı programıyla veri yükleme

Cloud Shell'i etkinleştirme

  1. Cloud Console'da Cloud Shell'i etkinleştir 'i 4292cbf4971c9786.png tıklayın.

bce75f34b2c53987.png

Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmı) gösterilir. Bu durumda Devam'ı tıkladığınızda bu ekranı bir daha görmezsiniz. Bu tek seferlik ekran aşağıdaki gibi görünür:

70f315d7b402b476.png

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

fbe3a0674c982259.png

Bu sanal makine, ihtiyaç duyduğunuz tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını yalnızca bir tarayıcı veya Chromebook'unuzla yapabilirsiniz.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.

  1. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu 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`
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Değilse şu komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

BigQuery'ye veri yükleme

Kolaylık sağlamak amacıyla, 10 Nisan 2019'a ait bazı veriler Wikimedia sayfa görüntüleme veri kümesinden alınarak gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz adresindeki Google Cloud Storage'da kullanıma sunulmuştur. Veri dosyası, GZip'li bir CSV dosyasıdır. Bu dosyayı bq komut satırı yardımcı programını kullanarak doğrudan yükleyebilirsiniz. Yükleme komutunun bir parçası olarak dosyanın şemasını da açıklarsınız.

bq load \
  --source_format CSV \
  --field_delimiter " " \
  --allow_jagged_rows \
  --quote "" \
  --max_bad_records 3 \
  $GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_140000 \
  gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz \
  wiki,title,requests:integer,zero:integer

Sayfa görüntüleme dosyasını yüklemek için birkaç gelişmiş seçenek kullandınız:

  • Dosyanın CSV dosyası olarak ayrıştırılması gerektiğini belirtmek için --source_format CSV olarak ayarlayın. CSV varsayılan biçim olduğundan bu adım isteğe bağlıdır.
  • Alanları sınırlamak için tek bir boşluk kullanıldığını belirtmek üzere --field_delimiter " " değerini ayarlayın.
  • --allow_jagged_rows seçeneğini, daha az sayıda sütun içeren satırları dahil edecek ve CSV dosyası yüklenirken hataları yoksayacak şekilde ayarlayın.
  • Dizelerin tırnak içine alınmadığını belirtmek için --quote "" değerini ayarlayın.
  • CSV dosyası ayrıştırılırken en fazla 3 hatanın yoksayılması için --max_bad_records 3 değerini ayarlayın.

bq komut satırı hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.

5. Veri kümesini önizleme

BigQuery konsolunda, yeni yüklediğiniz tablolardan birini açın.

  1. Projeyi genişletin.
  2. Veri kümesini genişletin.
  3. Tabloyu seçin. 99f875c838ed9a58.png

Tablo şemasını Şema sekmesinde görebilirsiniz. 4. Ayrıntılar sekmesine giderek tabloda ne kadar veri olduğunu öğrenin:

742cd54fbf17085.png

  1. Tablodaki satır seçimini görmek için Önizleme sekmesini açın.

397a9c25480735cc.png

6. Sorgu oluşturma

  1. Yeni sorgu oluştur'u tıklayın:

cc28282a25c9746e.png

Bu işlemle Sorgu düzenleyici açılır:

e881286d275ab4ec.png

  1. 10 Nisan 2019'da saat 14:00 ile 15:00 arasında Wikimedia'nın toplam görüntüleme sayısını bulmak için şu sorguyu yazın:
SELECT SUM(requests)
FROM `lab.pageviews_20190410_140000`
  1. Çalıştır'ı tıklayın:

9abb7c4039961f5b.png

Birkaç saniye içinde sonuç en altta listelenir ve ne kadar veri işlendiği de belirtilir:

a119b65f2ca49e41.png

Bu sorgu, tablo 691,4 MB olmasına rağmen 123,9 MB işledi. BigQuery yalnızca sorguda kullanılan sütunlardaki baytları işler. Bu nedenle, işlenen toplam veri miktarı tablo boyutundan önemli ölçüde daha az olabilir. Kümeleme ve bölümlendirme ile işlenen veri miktarı daha da azaltılabilir.

7. Daha gelişmiş sorgular

Wikipedia sayfa görüntülemelerini bulma

Wikimedia veri kümesi, tüm Wikimedia projelerinin (Wikipedia, Vikisözlük, Vikikitap ve Vikialıntı dahil) sayfa görüntülemelerini içerir. WHERE ifadesini ekleyerek sorguyu yalnızca İngilizce Vikipedi sayfalarıyla sınırlayın:

SELECT SUM(requests), wiki
FROM `lab.pageviews_20190410_140000`
WHERE wiki = "en"
GROUP BY wiki

d6c6c7901c314da7.png

Ek bir sütun wiki sorgulandığında işlenen veri miktarının 124 MB'tan 204 MB'a çıktığını unutmayın.

BigQuery, CONTAINS, GROUP BY, ORDER BY gibi birçok bilinen SQL ifadesini ve çeşitli toplama işlevlerini destekler. Ayrıca, metin alanlarını sorgulamak için normal ifadeler de kullanabilirsiniz. Birini deneyin:

SELECT title, SUM(requests) requests
FROM `lab.pageviews_20190410_140000`
WHERE
  wiki = "en"
  AND REGEXP_CONTAINS(title, 'Red.*t')
GROUP BY title
ORDER BY requests DESC

Birden çok tabloyu sorgulama

Joker karakter tablosu kullanarak birleşim oluşturmak için bir tablo aralığı seçebilirsiniz.

  1. Öncelikle, bir sonraki saatin sayfa görüntülemelerini yeni bir tabloya yükleyerek sorgulanacak ikinci bir tablo oluşturun:
bq load \
  --source_format CSV \
  --field_delimiter " " \
  --quote "" \
  $GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_150000 \
  gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-150000.gz \
  wiki,title,requests:integer,zero:integer
  1. Sorgu düzenleyicisinde, "pageviews_2019" önekini kullanarak tabloları sorgulayarak yüklediğiniz her iki tabloyu da sorgulayın:
SELECT title, SUM(requests) requests
FROM `lab.pageviews_2019*`
WHERE
  wiki = "en"
  AND REGEXP_CONTAINS(title, 'Red.*t')
GROUP BY title
ORDER BY requests DESC

_TABLE_SUFFIX sahte sütunuyla tabloları daha seçici bir şekilde filtreleyebilirsiniz. Bu sorgu, 10 Nisan'a karşılık gelen tablolarla sınırlıdır.

SELECT title, SUM(requests) requests
FROM `lab.pageviews_2019*`
WHERE
  _TABLE_SUFFIX BETWEEN '0410' AND '0410_9999999'
  AND wiki = "en"
  AND REGEXP_CONTAINS(title, 'Red.*t')
GROUP BY title
ORDER BY requests DESC

8. Temizleme

İsteğe bağlı olarak, bq rm komutuyla oluşturduğunuz veri kümesini silebilirsiniz. İçerdiği tabloları kaldırmak için -r işaretini kullanın.

bq rm -r lab

9. Tebrikler!

Gerçek dünyadaki Wikipedia sayfa görüntüleme veri kümesini sorgulamak için BigQuery ve SQL'i kullandınız. Petabayt ölçeğindeki veri kümelerini sorgulayabilirsiniz.

Daha fazla bilgi