Veri işleme dili (DML) ifadeleri

BigQuery'ye Giriş

Matt Forrest

Field CTO

BigQuery’de veri işleme genel bakış

  • INSERT: Yeni satırlar ekler.
  • UPDATE: Mevcut satırdaki değerleri değiştirir.
  • DELETE: Tablolardan istenmeyen veriyi siler.
  • MERGE: INSERT, UPDATE ve DELETE ifadelerini tek bir ifadede birleştirir.
  • CREATE TABLE AS: Bir sorgu sonucundan yeni tablo oluşturur.
BigQuery'ye Giriş

Dikkat edilecekler ve performans

  • Mümkünse DML ifadelerini tek seferde gruplayın, ayrı ayrı çalıştırmayın
  • UPDATE çalıştırırken mutlaka WHERE koşulu kullanın
  • Tablo bölümlemeleri ve kümeleri kullanmayı düşünün
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language
BigQuery'ye Giriş

INSERT

  • Tabloya kayıt ekleyin
-- Parantez içinde sütunları tanımlayın 
INSERT INTO customers (customer_id, name, email)

-- Her değer eklenecek bir satırdır
VALUES (1, "John Doe", "[email protected]"),
(2, "Jane Doe", "[email protected]"),
(3, "Alice Smith", "[email protected]");
BigQuery'ye Giriş

UPDATE

  • Koşula göre veriyi değiştirin
UPDATE customers
-- Her SET ifadesinde bir sütun ayarlayın
SET email = "[email protected]"
-- WHERE eklemezseniz tüm satırlar
-- güncellenir
WHERE customer_id = 1;
  • Alt sorgular veya join’lerle UPDATE
    UPDATE customers c
    SET c.email = e.email
    FROM emails e
    WHERE c.customer_id = 1;
    
BigQuery'ye Giriş

DELETE

  • DELETE kayıtları kalıcı olarak siler ve geri alınamaz
DELETE FROM customers

-- Yalnızca belirli satırları silmek için WHERE ekleyin
WHERE customer_id = 3;
DELETE FROM customers c
JOIN emails e USING (customer_id)
WHERE email = '[email protected]'
BigQuery'ye Giriş

MERGE

  • INSERT, UPDATE ve DELETE işlemlerini tek bir işlemde birleştirir
-- Hedef tablo customers olarak ayarlanır
MERGE customers AS target

-- Kaynak tablo new_customers olarak ayarlanır USING new_customers AS source
-- Eşleştirme koşulu ON target.customer_id = source.customer_id
-- E-postalar uyuşmuyorsa e-postayı güncelle WHEN MATCHED AND target.email != source.email THEN UPDATE SET email = source.email
-- Eşleşme yoksa kaydı ekle WHEN NOT MATCHED THEN INSERT (customer_id, name, email) VALUES (source.customer_id, source.name, source.email);
BigQuery'ye Giriş

CREATE TABLE

  • Sorgulardan yeni tablolar oluşturun
CREATE TABLE active_customers AS
SELECT customer_id, name, email 
FROM customers
WHERE last_active_date > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
BigQuery'ye Giriş

Hadi pratik yapalım!

BigQuery'ye Giriş

Preparing Video For Download...