La modifica dei dati ti consente di aggiornare, eliminare e unire i record nelle tabelle Apache Iceberg nel catalogo di runtime Lakehouse.
Quando BigQuery DML è abilitato sulla tua tabella, puoi eseguire istruzioni DML standard da BigQuery insieme a motori open source come Spark e Trino, ottenendo la piena interoperabilità di scrittura su una singola copia dei dati archiviati in Cloud Storage.
Prima di iniziare
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
-
Abilita l'API BigLake, se non è già abilitata.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli. - Configura il catalogo di runtime Lakehouse con l'endpoint del catalogo REST Apache Iceberg.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per modificare i dati in una tabella, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto e nel bucket di archiviazione:
-
Scrivere i dati della tabella in modalità di distribuzione delle credenziali:
BigLake Editor (
roles/biglake.editor) - il progetto -
Scrivi i dati della tabella in modalità di distribuzione non delle credenziali:
- BigLake Editor (
roles/biglake.editor) - il progetto - Storage Object User (
roles/storage.objectUser): il bucket Cloud Storage
- BigLake Editor (
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Funzionalità e supporto delle tabelle
Quando utilizzi le tabelle nel catalogo di runtime di Lakehouse, è utile comprendere i diversi tipi di tabelle e le relative funzionalità di attivazione. Per scoprire di più sull'utilizzo specifico delle tabelle Apache Iceberg, consulta Panoramica delle tabelle Apache Iceberg.
Tabelle Iceberg supportate
Sono supportate solo le tabelle Apache Iceberg V2 (GA) e V3 (anteprima). Le tabelle Iceberg V1 non sono supportate. Per eseguire l'upgrade delle tabelle V1 esistenti, consulta Esegui l'upgrade delle tabelle Iceberg V1 alla versione V2.
Utilizza le opzioni della tabella (anteprima)
Puoi attivare l'utilizzo delle funzionalità gestite di BigQuery, come il linguaggio di manipolazione dei dati (DML) di BigQuery e la gestione automatica delle tabelle, configurando proprietà specifiche delle tabelle. Queste funzionalità vengono attivate in modi diversi a seconda di dove viene creata la tabella:
- Da BigQuery: BigQuery DML e la gestione automatica delle tabelle sono abilitati per impostazione predefinita.
- Dai motori open source: per attivare l'opzione, devi configurare esplicitamente le proprietà della tabella. Per saperne di più, consulta Configura le opzioni della tabella.
Aggiorna i dati
Aggiorna le righe esistenti nella tabella:
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;
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto Google Cloud.CATALOG_ID: l'ID del catalogo di runtime Lakehouse.NAMESPACE: il nome dello spazio dei nomi Iceberg.TABLE_NAME: il nome della tabella Iceberg.
Elimina dati
Elimina righe specifiche dalla tabella:
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;
Unisci i dati
Unisci i dati di una tabella di origine nella tabella Iceberg di destinazione:
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);
Passaggi successivi
- Scopri come eseguire query su una tabella.
- Scopri come configurare le opzioni della tabella.