Ana içeriğe geç
Kesit SQL
Orta · BigQuery ve Bulut Veri Ambarları

BigQuery'ye giriş: proje, veri seti ve maliyet mantığı

Sunucusuz veri ambarı, GoogleSQL farkları, taranan bayta göre ücret.

Uygulamada aç, 4 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

BigQuery nedir?

BigQuery, Google Cloud'un sunucusuz (serverless) veri ambarıdır: sunucu kurmaz, indeks oluşturmazsın; terabaytlarca veriyi saniyeler içinde tarayan sorgular yazarsın. Google Analytics 4 ve Google Ads verilerinin doğrudan aktarıldığı yer olduğu için pazarlama ve ürün analitiğinde çok yaygındır. Dili GoogleSQL'dir (standart SQL'e yakın).

Varsayılan SQL türü BigQuery yaparsan tüm derslerdeki sorgular BigQuery yazımıyla gösterilir; her kod kutusunda BigQuery sekmesi de vardır.

Adlandırma: proje.veri_seti.tablo

SELECT order_id, order_date
FROM `sirket-proje.anadolu.orders`
WHERE order_date >= '2024-12-01';

Gerçek BigQuery'de tablo adı veri setiyle (çoğu zaman projeyle de) yazılır ve ters tırnak kullanılır. Bu uygulamada anadolu veri seti varsayılan olduğu için kısaca orders yazabilirsin; anadolu.orders da çalışır.

Maliyet: taranan veri kadar öde

İsteğe bağlı (on-demand) fiyatlandırmada ödediğin tutar, sorgunun taradığı bayt miktarına göre hesaplanır. BigQuery sütun tabanlı sakladığı için:

Diğer SQL türlerinden farklar

KonuBigQuery
Küme işlemleriUNION ALL veya UNION DISTINCT; çıplak UNION hata verir
Bölme/ her zaman ondalıklı; tam sayı bölmesi DIV(a, b), sıfıra güvenli bölme SAFE_DIVIDE(a, b)
Kalan% yok, MOD(a, b)
TarihDATE_ADD(d, INTERVAL 1 MONTH), DATE_DIFF(bitis, baslangic, DAY), DATE_TRUNC(d, MONTH), FORMAT_DATE('%Y-%m', d)
TiplerINT64, FLOAT64, NUMERIC, STRING, DATE, DATETIME, TIMESTAMP, BOOL, ARRAY, STRUCT
Hata yerine NULLSAFE_CAST, SAFE_DIVIDE, SAFE.PARSE_DATE
KoşulluIF(koşul, a, b), COUNTIF(koşul)
KısıtlarPRIMARY KEY / FOREIGN KEY yalnızca NOT ENFORCED; UNIQUE, CHECK, indeks ve trigger yok
DMLUPDATE ve DELETE her zaman WHERE ister (WHERE true)

Tipik bir BigQuery sorgusu

SELECT FORMAT_DATE('%Y-%m', order_date) AS ay,
       COUNT(*) AS siparis,
       COUNTIF(status = 'cancelled') AS iptal,
       ROUND(SAFE_DIVIDE(COUNTIF(status = 'cancelled'), COUNT(*)) * 100, 1) AS iptal_orani
FROM anadolu.orders
WHERE order_date >= '2024-07-01'
GROUP BY ay
ORDER BY ay;
Alıştırmalara geç (4)