La modification des données vous permet de mettre à jour, de supprimer et de fusionner des enregistrements dans vos tables Apache Iceberg du catalogue d'environnements d'exécution Lakehouse.
Lorsque le LMD BigQuery est activé sur votre table, vous pouvez exécuter des instructions LMD standards à partir de BigQuery, ainsi que des moteurs Open Source tels que Spark et Trino, ce qui permet une interopérabilité d'écriture complète sur une seule copie des données stockées dans Cloud Storage.
Avant de commencer
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
-
Activez l'API BigLake si ce n'est pas déjà fait.
Rôles requis pour activer les API
Pour activer des API, vous devez disposer de l'autorisation
serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles. - Configurez le catalogue d'environnements d'exécution Lakehouse avec le point de terminaison du catalogue REST Apache Iceberg.
Rôles requis
Pour obtenir les autorisations nécessaires pour modifier les données d'une table, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet et votre bucket de stockage :
-
Écrire des données de table en mode de distribution des identifiants : Éditeur BigLake (
roles/biglake.editor) - le projet -
Écrivez les données de la table en mode de distribution sans identifiants :
- Éditeur BigLake (
roles/biglake.editor) : le projet - Utilisateur d'objets Storage (
roles/storage.objectUser) : sur le bucket Cloud Storage
- Éditeur BigLake (
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Fonctionnalités et compatibilité des tables
Lorsque vous utilisez des tables dans le catalogue d'environnements d'exécution Lakehouse, il est utile de comprendre les différents types de tables et leurs fonctionnalités d'activation. Pour en savoir plus sur l'utilisation des tables Apache Iceberg, consultez Présentation des tables Apache Iceberg.
Tables Iceberg compatibles
Seules les tables Apache Iceberg V2 (disponibilité générale) et V3 (preview) sont acceptées. Les tables Iceberg V1 ne sont pas compatibles. Pour mettre à niveau des tables V1 existantes, consultez Mettre à niveau des tables Iceberg V1 vers la version V2.
Utiliser les options de tableau (preview)
Vous pouvez choisir d'utiliser les fonctionnalités gérées de BigQuery, telles que le langage de manipulation de données (LMD) BigQuery et la gestion automatique des tables, en configurant des propriétés de table spécifiques. Ces fonctionnalités sont activées de différentes manières selon l'endroit où la table est créée :
- Depuis BigQuery : le LMD BigQuery et la gestion automatique des tables sont activés par défaut.
- À partir de moteurs Open Source : pour activer cette fonctionnalité, vous devez configurer explicitement les propriétés de la table. Pour en savoir plus, consultez Configurer les options de table.
Mettre à jour des données
Mettez à jour les lignes existantes dans la table :
Spark
ALTER TABLE TABLE_NAME SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);
UPDATE TABLE_NAME SET data = 'updated row' WHERE id = 1;
Trino
ALTER TABLE TABLE_NAME SET PROPERTIES "gcp.biglake.bigquery-dml.enabled" = 'true';
UPDATE TABLE_NAME SET data = 'updated row' WHERE id = 1;
BigQuery
UPDATE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET data = "updated row"
WHERE id = 1;
Remplacez les éléments suivants :
PROJECT_ID: ID de votre projet Google Cloud.CATALOG_ID: ID de votre catalogue d'environnements d'exécution Lakehouse.NAMESPACE: nom de votre espace de noms Iceberg.TABLE_NAME: nom de votre table Iceberg.
Supprimer des données
Supprimez des lignes spécifiques de la table :
Spark
ALTER TABLE TABLE_NAME SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);
DELETE FROM TABLE_NAME WHERE id = 1;
Trino
ALTER TABLE TABLE_NAME SET PROPERTIES "gcp.biglake.bigquery-dml.enabled" = 'true';
DELETE FROM TABLE_NAME WHERE id = 1;
BigQuery
DELETE FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
WHERE id = 1;
Fusionner les données
Fusionnez les données d'une table source dans votre table Iceberg cible :
Spark
ALTER TABLE TARGET_TABLE SET TBLPROPERTIES ('gcp.biglake.bigquery-dml.enabled' = true);
MERGE INTO TARGET_TABLE t
USING SOURCE_TABLE s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET t.data = s.data
WHEN NOT MATCHED THEN
INSERT (id, data) VALUES (s.id, s.data);
Trino
ALTER TABLE TARGET_TABLE SET PROPERTIES "gcp.biglake.bigquery-dml.enabled" = 'true';
MERGE INTO TARGET_TABLE t
USING SOURCE_TABLE s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET t.data = s.data
WHEN NOT MATCHED THEN
INSERT (id, data) VALUES (s.id, s.data);
BigQuery
MERGE `PROJECT_ID.CATALOG_ID.NAMESPACE.TARGET_TABLE` t
USING `PROJECT_ID.CATALOG_ID.NAMESPACE.SOURCE_TABLE` s
ON t.id = s.id
WHEN MATCHED THEN
UPDATE SET data = s.data
WHEN NOT MATCHED THEN
INSERT (id, data) VALUES (id, data);
Étapes suivantes
- Découvrez comment interroger une table.
- Découvrez comment configurer les options de table.