Instructions du langage de manipulation des données (DML)

Introduction à BigQuery

Matt Forrest

Field CTO

Aperçu de la manipulation des données dans BigQuery

  • INSERT : Ajouter de nouvelles lignes.
  • UPDATE : Modifier des valeurs existantes dans une ligne.
  • DELETE : Retirer des données non désirées d'une table.
  • MERGE : Regroupe INSERT, UPDATE et DELETE en une seule instruction.
  • CREATE TABLE AS : Crée une nouvelle table à partir d'un résultat de requête.
Introduction à BigQuery

Points à considérer et performance

  • Groupez les instructions DML quand c'est possible plutôt que de les exécuter séparément
  • Utilisez une condition WHERE avec une instruction UPDATE
  • Envisagez d'utiliser des partitions et des groupes de tables
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language
Introduction à BigQuery

INSERT

  • Ajouter des enregistrements aux tables
-- Définir les colonnes entre parenthèses
INSERT INTO customers (customer_id, name, email)

-- Chaque valeur correspond à une ligne à insérer
VALUES (1, "John Doe", "[email protected]"),
(2, "Jane Doe", "[email protected]"),
(3, "Alice Smith", "[email protected]");
Introduction à BigQuery

UPDATE

  • Modifier des données selon une condition
UPDATE customers
-- Définir une colonne par instruction SET
SET email = "[email protected]"
-- Inclure WHERE, sinon toutes les
-- lignes seront mises à jour
WHERE customer_id = 1;
  • UPDATE avec des sous-requêtes ou des jointures
    UPDATE customers c
    SET c.email = e.email
    FROM emails e
    WHERE c.customer_id = 1;
    
Introduction à BigQuery

DELETE

  • DELETE supprime définitivement des enregistrements et ne peut pas être annulé
DELETE FROM customers

-- Inclure WHERE pour supprimer seulement les lignes visées
WHERE customer_id = 3;
DELETE FROM customers c
JOIN emails e USING (customer_id)
WHERE email = '[email protected]'
Introduction à BigQuery

MERGE

  • Combine INSERT, UPDATE et DELETE en une seule opération
-- Définit la table customers comme cible
MERGE customers AS target

-- La source est new_customers USING new_customers AS source
-- Condition d'appariement ON target.customer_id = source.customer_id
-- Si les courriels ne correspondent pas, mettre à jour le courriel WHEN MATCHED AND target.email != source.email THEN UPDATE SET email = source.email
-- Si aucun appariement, insérer l'enregistrement WHEN NOT MATCHED THEN INSERT (customer_id, name, email) VALUES (source.customer_id, source.name, source.email);
Introduction à BigQuery

CREATE TABLE

  • Créer de nouvelles tables à partir de requêtes
CREATE TABLE active_customers AS
SELECT customer_id, name, email 
FROM customers
WHERE last_active_date > DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);
Introduction à BigQuery

Passons à la pratique !

Introduction à BigQuery

Preparing Video For Download...