La modificación de datos te permite actualizar, borrar, combinar y truncar registros en tus tablas de Apache Iceberg en el catálogo del entorno de ejecución de Lakehouse.
Cuando el DML de BigQuery está habilitado en tu tabla, puedes ejecutar instrucciones DML estándar desde BigQuery junto con motores de código abierto como Spark y Trino, lo que permite lograr una interoperabilidad de escritura completa en una sola copia de los datos almacenados en Cloud Storage.
Antes de comenzar
-
Verifica que la facturación esté habilitada para tu Google Cloud proyecto.
-
Habilita la API de BigLake.
Roles necesarios para habilitar las APIs
Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (
roles/serviceusage.serviceUsageAdmin), que contiene el permisoserviceusage.services.enable. Obtén más información para otorgar roles. - Configura el catálogo del entorno de ejecución de Lakehouse con el extremo del catálogo REST de Apache Iceberg.
Roles obligatorios
Para obtener los permisos que necesitas para modificar datos en una tabla, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto y bucket de almacenamiento:
-
Escribe datos de la tabla en el modo de venta de credenciales:
Editor de BigLake (
roles/biglake.editor) - el proyecto -
Escribe datos de la tabla en el modo de venta sin credenciales:
- Editor de BigLake (
roles/biglake.editor) - el proyecto - Usuario de objetos de almacenamiento (
roles/storage.objectUser) - el bucket de Cloud Storage
- Editor de BigLake (
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Capacidades y compatibilidad de tablas
Cuando usas tablas en el catálogo del entorno de ejecución de Lakehouse, es útil comprender los diferentes tipos de tablas y sus capacidades de inclusión. Para obtener más información sobre el uso de tablas de Apache Iceberg específicamente, consulta Descripción general de las tablas de Apache Iceberg.
Tablas de Iceberg compatibles
Solo se admiten las tablas de Apache Iceberg V2 (DG) y V3 (vista previa). No se admiten las tablas de Iceberg V1. Para actualizar las tablas V1 existentes, consulta Actualiza las tablas de Iceberg V1 a V2.
Usa opciones de tabla (vista previa)
Puedes habilitar el uso de las capacidades administradas de BigQuery, como el lenguaje de manipulación de datos (DML) de BigQuery y la administración automática de tablas, mediante la configuración de propiedades de tabla específicas. Estas funciones se habilitan de diferentes maneras según dónde se cree la tabla:
- Desde BigQuery: El DML de BigQuery y la administración automática de tablas están habilitados de forma predeterminada.
- Desde motores de código abierto: Para habilitar la función, debes configurar explícitamente las propiedades de la tabla. Consulta Configura opciones de tabla para obtener más información.
Actualiza datos
Actualiza las filas existentes en la tabla:
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;
Reemplaza lo siguiente:
PROJECT_ID: Es el ID de tu Google Cloud proyecto.CATALOG_ID: Es el ID del catálogo del entorno de ejecución de Lakehouse.NAMESPACE: Es el nombre de tu espacio de nombres de Iceberg.TABLE_NAME: Es el nombre de tu tabla de Iceberg.
Borra datos
Borra filas específicas de la tabla:
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;
Combina datos
Combina datos de una tabla de origen en tu tabla de Iceberg de destino:
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);
¿Qué sigue?
- Aprende a consultar una tabla.
- Aprende a configurar opciones de tabla.