1. Giriş
BigQuery, Google'ın tümüyle yönetilen, NoOps özellikli, düşük maliyetli analitik veritabanıdır. BigQuery ile veritabanı yöneticisine veya altyapıya ihtiyaç duymadan terabaytlarca veriyi sorgulayabilirsiniz. BigQuery, bildiğiniz SQL'i ve yalnızca kullandığınız kadar ödeme yapmanızı sağlayan bir faturalandırma modelini kullanır. BigQuery, anlamlı bulgulara ulaşabilmeniz için veri analizine odaklanmanıza olanak tanır. Bu codelab'de, yerel bir CSV dosyasını yeni bir BigQuery tablosuna yüklemek için bq komut satırı aracını kullanacaksınız.
Neler öğreneceksiniz?
- BigQuery için bq komut satırı aracını kullanma
- Yerel veri dosyalarını BigQuery tablosuna yükleme
Gerekenler
- Google Cloud projesi
- Google Chrome gibi bir tarayıcı
2. Hazırlanın
BigQuery'yi etkinleştirme
Google Hesabınız yoksa hesap oluşturmanız gerekir.
- 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
- Hizmet şartlarını kabul edin.
- 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. 
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.
Cloud Shell
Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
Cloud Shell'i etkinleştirme
- Cloud Console'da Cloud Shell'i etkinleştir 'i
tıklayın.

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:

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

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.
- 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`
- 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].
3. Veri kümesi oluşturma
Tablolarınızı içerecek bir veri kümesi oluşturun.
Veri kümesi nedir?
BigQuery veri kümesi, tabloların bir araya getirilmiş halidir. Bir veri kümesindeki tüm tablolar aynı veri konumunda depolanır. Ayrıca, bir veri kümesine ve tablolarına erişimi sınırlamak için özel erişim kontrolleri de ekleyebilirsiniz.
Veri kümesi oluşturma
Cloud Shell'de, "bq_load_codelab" adlı bir veri kümesi oluşturmak için bq mk komutunu kullanın.
bq mk bq_load_codelab
Veri kümesi özelliklerini görüntüleme
bq show komutuyla veri kümesinin özelliklerini görüntüleyerek veri kümesini oluşturduğunuzu doğrulayın.
bq show bq_load_codelab
Şuna benzer bir çıkış alırsınız:
Dataset my-project:bq_load_codelab
Last modified ACLs Labels
----------------- -------------------- --------
15 Jun 14:12:49 Owners:
projectOwners,
your-email@example.com
Writers:
projectWriters
Readers:
projectReaders
4. Veri dosyasını oluşturma
BigQuery, yeni satırlarla ayrılmış JSON, Avro ve CSV dahil olmak üzere çeşitli veri biçimlerindeki verileri yükleyebilir. Basitlik için CSV kullanacaksınız.
CSV dosyası oluşturma
Cloud Shell'de boş bir CSV dosyası oluşturun.
touch customer_transactions.csv
Cloud Shell'de cloudshell edit komutunu çalıştırarak CSV dosyasını kod düzenleyicide açın. Bu işlem, kod düzenleyici ve Cloud Shell paneli içeren yeni bir tarayıcı penceresi açar.
cloudshell edit customer_transactions.csv
Kod düzenleyicide, BigQuery'ye yüklenecek virgülle ayrılmış bazı değerler girin.
ID,Zipcode,Timestamp,Amount,Feedback,SKU c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5 c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0
Dosya > Düzenle'yi tıklayarak CSV dosyasını kaydedin.
5. Verileri yükle
CSV dosyanızı bir BigQuery tablosuna yüklemek için bq load komutunu kullanın.
bq load \
--source_format=CSV \
--skip_leading_rows=1 \
bq_load_codelab.customer_transactions \
./customer_transactions.csv \
id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string
Aşağıdaki seçenekleri kullandınız:
--source_format=CSV, veri dosyasını ayrıştırırken CSV veri biçimini kullanır.--skip_leading_rows=1, CSV dosyasındaki ilk satırı başlık satırı olduğu için atlar.Bq_load_codelab.customer_transactions—the first positional argument—, verilerin hangi tabloya yükleneceğini tanımlar../customer_transactions.csv(ikinci konumsal bağımsız değişken), hangi dosyanın yükleneceğini tanımlar. Yerel dosyalara ek olarak, bq load komutugs://my_bucket/path/to/file URIsile Cloud Storage'daki dosyaları da yükleyebilir.- JSON şema dosyasında veya virgülle ayrılmış liste olarak tanımlanabilen bir şema. (Basitlik için virgülle ayrılmış bir liste kullandınız.)
customer_transactions tablosunda aşağıdaki şemayı kullandınız:
Id:string: Müşteri tanımlayıcısıZip:string: ABD posta koduTtime:timestamp: İşlemin gerçekleştiği tarih ve saatAmount:numeric: Bir işlemin tutarı (A sayısal sütun, verileri ondalık biçimde depolar. Bu, parasal değerler için kullanışlıdır.)Fdbk:float: İşlemle ilgili geri bildirim anketinden alınan puanSku:string: Satın alınan öğenin tanımlayıcısı
Tablo ayrıntılarını alma
Tablo özelliklerini göstererek tablonun yüklendiğini doğrulayın.
bq show bq_load_codelab.customer_transactions
Çıkış:
Table my-project:bq_load_codelab.customer_transactions
Last modified Schema Total Rows Total Bytes
----------------- --------------------- ------------ -------------
15 Jun 15:13:55 |- id: string 3 159
|- zip: string
|- ttime: timestamp
|- amount: numeric
|- fdbk: float
|- sku: string
6. Verileri sorgulama
Verileriniz yüklendiğine göre BigQuery web kullanıcı arayüzünü, bq komutunu veya API'yi kullanarak verilerinizi sorgulayabilirsiniz. Sorgularınız, okuma izninizin olduğu herhangi bir veri kümesiyle (veya aynı konumda olduğu sürece veri kümeleriyle) verilerinizi birleştirebilir.
Veri kümenizi ABD posta kodları veri kümesiyle birleştiren ve işlemleri ABD eyaletine göre toplayan standart bir SQL sorgusu çalıştırın. Sorguyu yürütmek için bq query komutunu kullanın.
bq query --nouse_legacy_sql ' SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code FROM `bq_load_codelab.customer_transactions` c JOIN `bigquery-public-data.utility_us.zipcode_area` z ON c.zip = z.zipcode GROUP BY state_code '
Bu komut, aşağıdaki gibi bir çıkış vermelidir:
Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE +--------------+------------+ | amount_total | state_code | +--------------+------------+ | 53.6 | NY | | 7.18 | TX | +--------------+------------+
Çalıştırdığınız sorgu, herkese açık bir veri kümesi ve özel veri kümenizi kullanıyordu. Aynı sorgunun yorumlu sürümünü okuyarak daha fazla bilgi edinin:
#standardSQL SELECT /* Total of all transactions in the state. */ SUM(c.amount) AS amount_total, /* State corresponding to the transaction's zipcode. */ z.state_code AS state_code /* Query the table you just constructed. * Note: If you omit the project from the table ID, * the dataset is read from your project. */ FROM `bq_load_codelab.customer_transactions` c /* Join the table to the zipcode public dataset. */ JOIN `bigquery-public-data.utility_us.zipcode_area` z /* Find the state corresponding to the transaction's zipcode. */ ON c.zip = z.zipcode /* Group over all transactions by state. */ GROUP BY state_code
7. Temizleme
bq rm komutuyla oluşturduğunuz veri kümesini silin. İçerdiği tabloları kaldırmak için -r işaretini kullanın.
bq rm -r bq_load_codelab
8. Tebrikler!
BigQuery'ye bir tablo yükleyip sorguladınız.
Kapsamınız
- BigQuery ile etkileşim kurmak için
bqkomut satırı aracını kullanma - BigQuery sorgusuyla verilerinizi ve herkese açık bir veri kümesini birleştirme.
Sırada ne var?
Aşağıdaki konular hakkında daha fazla bilgi edinin:
bqkomut satırı aracı- BigQuery'ye veri yüklemenin diğer yolları.
- BigQuery üzerinden kullanılabilen diğer herkese açık veri kümeleri.
- TIL with BigQuery'deki hava durumu, suç ve diğer veri türleri.