La modification des données vous permet de mettre à jour, de supprimer, de fusionner et de tronquer des enregistrements dans vos tables Apache Iceberg du catalogue d'environnements d'exécution Lakehouse.
Lorsque le langage de manipulation de données (LMD) BigQuery est activé dans 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 vous permet d'obtenir une interopérabilité en é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 Google Cloud projet.
-
Activez l'API BigLake.
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. 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 d'identifiants:
Éditeur BigLake (
roles/biglake.editor) : le projet -
Écrire des données de table en mode de non-distribution d'identifiants :
- Éditeur BigLake (
roles/biglake.editor) : le projet - Utilisateur d'objets Storage (
roles/storage.objectUser) : 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 des fonctionnalités. Pour en savoir plus sur l'utilisation des tables Apache Iceberg, consultez Présentation des tables Apache Iceberg tables.
Tables Iceberg compatibles
Seules les tables Apache Iceberg V2 (DG) et V3 (bêta) sont compatibles. Les tables Iceberg V1 ne sont pas compatibles. Pour mettre à niveau les tables V1 existantes, consultez Mettre à niveau les tables Iceberg V1 vers la version V2.
Utiliser les options de table (bêta)
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 :
- À partir de BigQuery : le langage de manipulation de données (LMD) BigQuery et la gestion automatique des tables sont activés par défaut.
- À partir de moteurs Open Source : pour activer ces fonctionnalités, 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 Google Cloud projet.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 des 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);
Étape suivante
- Découvrez comment interroger une table.
- Découvrez comment configurer les options de table.