Instrucțiuni DML (Data Manipulation Language)

Introducere în BigQuery

Matt Forrest

Field CTO

Prezentare generală a manipulării datelor în BigQuery

  • INSERT: Adaugă rânduri noi de date.
  • UPDATE: Modifică valorile existente dintr-un rând.
  • DELETE: Elimină date nedorite dintr-un tabel.
  • MERGE: Instrucțiune care combină INSERT, UPDATE și DELETE într-o singură instrucțiune.
  • CREATE TABLE AS: Creează un tabel nou dintr-un rezultat al unei interogări.
Introducere în BigQuery

Considerații și performanță

  • Grupați instrucțiunile DML ori de câte ori este posibil, în loc să le rulați individual
  • Trebuie să utilizați o condiție WHERE când rulați o instrucțiune UPDATE
  • Luați în considerare utilizarea partițiilor și clusterelor de tabel
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language
Introducere în BigQuery

INSERT

  • Adăugați înregistrări în tabele
-- Definiți coloanele în paranteze 
INSERT INTO customers (customer_id, name, email)

-- Fiecare valoare reprezintă un rând de inserat
VALUES (1, "John Doe", "[email protected]"),
(2, "Jane Doe", "[email protected]"),
(3, "Alice Smith", "[email protected]");
Introducere în BigQuery

UPDATE

  • Modificarea datelor pe baza unei condiții
UPDATE customers
-- Setați o coloană pentru fiecare instrucțiune SET
SET email = "[email protected]"
-- Asigurați-vă că includeți WHERE, altfel toate
-- rândurile vor fi actualizate
WHERE customer_id = 1;
  • UPDATE împreună cu subinterogări sau joinuri
    UPDATE customers c
    SET c.email = e.email
    FROM emails e
    WHERE c.customer_id = 1;
    
Introducere în BigQuery

DELETE

  • DELETE elimină înregistrările permanent și nu poate fi anulat
DELETE FROM customers

-- Include WHERE pentru a șterge doar anumite rânduri
WHERE customer_id = 3;
DELETE FROM customers c
JOIN emails e USING (customer_id)
WHERE email = '[email protected]'
Introducere în BigQuery

MERGE

  • Combină INSERT, UPDATE și DELETE într-o singură operație
-- Setează tabelul customers ca țintă
MERGE customers AS target

-- Sursa este setată la new_customers USING new_customers AS source
-- Condiție de potrivire ON target.customer_id = source.customer_id
-- Dacă adresele de email diferă, actualizați emailul WHEN MATCHED AND target.email != source.email THEN UPDATE SET email = source.email
-- Dacă nu există potrivire, inserați înregistrarea WHEN NOT MATCHED THEN INSERT (customer_id, name, email) VALUES (source.customer_id, source.name, source.email);
Introducere în BigQuery

CREATE TABLE

  • Creați tabele noi din interogări
CREATE TABLE active_customers AS
SELECT customer_id, name, email 
FROM customers
WHERE last_active_date > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
Introducere în BigQuery

Să exersăm!

Introducere în BigQuery

Preparing Video For Download...