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

BigQuery kısayolları: QUALIFY, SELECT * EXCEPT ve SAFE_ fonksiyonlar

Alt sorgu yazmadan pencere filtreleme, sütun dışlama, hataya dayanıklı dönüşümler.

Uygulamada aç, 3 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ç.

QUALIFY: pencere fonksiyonuna göre filtre

“Her müşterinin son siparişi” gibi sorularda normalde ROW_NUMBER'ı bir alt sorguda hesaplayıp dışarıda filtreleriz. BigQuery (ve Snowflake, Databricks) bunu QUALIFY ile tek adımda yapar: QUALIFY, pencere fonksiyonları için WHERE gibidir.

SELECT customer_id, order_id, order_date
FROM orders
WHERE customer_id <= 5
QUALIFY ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC, order_id DESC) = 1
ORDER BY customer_id;

SELECT * EXCEPT ve REPLACE

Geniş tablolarda “birkaç sütun hariç hepsi” demek için:

SELECT * EXCEPT (email, birth_year)
FROM customers
WHERE customer_id <= 3;

SELECT * REPLACE (UPPER(city) AS city) ise bir sütunu dönüştürülmüş haliyle değiştirir.

SAFE_ fonksiyonlar: hata yerine NULL

Kirli veride tek bir hatalı değer tüm sorguyu durdurur. SAFE_ önekli fonksiyonlar hata yerine NULL döndürür:

SELECT signup_date,
       COALESCE(SAFE.PARSE_DATE('%Y-%m-%d', signup_date),
                SAFE.PARSE_DATE('%d.%m.%Y', signup_date)) AS tarih
FROM raw_signups
LIMIT 6;
FonksiyonHata durumunda
SAFE_CAST('abc' AS INT64)NULL
SAFE_DIVIDE(10, 0)NULL
SAFE.PARSE_DATE('%d.%m.%Y', '31.02.2024')NULL
Diğer SQL türlerindeki karşılıklarıSQL Server'da TRY_CAST / TRY_CONVERT, PostgreSQL'de NULLIF ile bölme, Oracle'da CAST(... DEFAULT NULL ON CONVERSION ERROR).
Alıştırmalara geç (3)