DML-instructies (Data Manipulation Language)

Introductie tot BigQuery

Matt Forrest

Field CTO

Overzicht van datamanipulatie in BigQuery

  • INSERT: Voeg nieuwe rijen toe.
  • UPDATE: Wijzig bestaande waarden in een rij.
  • DELETE: Verwijder ongewenste data uit tabellen.
  • MERGE: Combineert INSERT, UPDATE en DELETE in één instructie.
  • CREATE TABLE AS: Maakt een nieuwe tabel op basis van een queryresultaat.
Introductie tot BigQuery

Overwegingen en performance

  • Groepeer DML-instructies waar mogelijk in plaats van ze los uit te voeren
  • Gebruik altijd een WHERE-voorwaarde bij een UPDATE
  • Overweeg partitities en clusters voor tabellen
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language
Introductie tot BigQuery

INSERT

  • Voeg records toe aan tabellen
-- Definieer de kolommen tussen haakjes 
INSERT INTO customers (customer_id, name, email)

-- Elke waarde is een rij die wordt ingevoegd
VALUES (1, "John Doe", "[email protected]"),
(2, "Jane Doe", "[email protected]"),
(3, "Alice Smith", "[email protected]");
Introductie tot BigQuery

UPDATE

  • Data wijzigen op basis van een voorwaarde
UPDATE customers
-- Stel per SET-instructie één kolom in
SET email = "[email protected]"
-- Neem WHERE op, anders worden
-- alle rijen geüpdatet
WHERE customer_id = 1;
  • UPDATE met subquery's of joins
    UPDATE customers c
    SET c.email = e.email
    FROM emails e
    WHERE c.customer_id = 1;
    
Introductie tot BigQuery

DELETE

  • DELETE verwijdert records definitief en kan niet ongedaan worden gemaakt
DELETE FROM customers

-- Voeg WHERE toe om alleen specifieke rijen te verwijderen
WHERE customer_id = 3;
DELETE FROM customers c
JOIN emails e USING (customer_id)
WHERE email = '[email protected]'
Introductie tot BigQuery

MERGE

  • Combineert INSERT, UPDATE en DELETE in één bewerking
-- Stelt de customers-tabel in als doel
MERGE customers AS target

-- De bron is new_customers USING new_customers AS source
-- Match-voorwaarde ON target.customer_id = source.customer_id
-- Als e-mails niet overeenkomen, update de e-mail WHEN MATCHED AND target.email != source.email THEN UPDATE SET email = source.email
-- Als er geen match is, voeg het record in WHEN NOT MATCHED THEN INSERT (customer_id, name, email) VALUES (source.customer_id, source.name, source.email);
Introductie tot BigQuery

CREATE TABLE

  • Maak nieuwe tabellen vanuit queries
CREATE TABLE active_customers AS
SELECT customer_id, name, email 
FROM customers
WHERE last_active_date > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
Introductie tot BigQuery

Laten we oefenen!

Introductie tot BigQuery

Preparing Video For Download...