Modificare i dati con le istruzioni DML

La modifica dei dati consente di aggiornare, eliminare, unire e troncare i record nelle tabelle Apache Iceberg nel catalogo runtime Lakehouse.

Quando BigQuery DML è abilitato nella tabella, puoi eseguire istruzioni DML standard da BigQuery insieme a motori open source come Spark e Trino, ottenendo una completa interoperabilità di scrittura su una singola copia dei dati archiviati in Cloud Storage.

Prima di iniziare

  1. Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.

  2. Abilita l'API BigLake.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilitare l'API

  3. Configura il catalogo runtime Lakehouse catalogo 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:

  • Scrivi i dati della tabella in modalità di vendita delle credenziali: BigLake Editor (roles/biglake.editor) - il progetto
  • Scrivi i dati della tabella in modalità di vendita non delle credenziali:
    • BigLake Editor (roles/biglake.editor) - il progetto
    • Storage Object User (roles/storage.objectUser) - il bucket Cloud Storage

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 runtime Lakehouse, è utile comprendere i diversi tipi di tabelle e le relative funzionalità di attivazione delle funzionalità. Per scoprire di più sull'utilizzo 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 Eseguire l'upgrade delle tabelle Iceberg V1 a V2.

Utilizzare le opzioni della tabella (anteprima)

Puoi attivare l'utilizzo delle funzionalità gestite di BigQuery, come BigQuery Data Manipulation Language (DML) e la gestione automatica delle tabelle, configurando proprietà specifiche della tabella. Queste funzionalità vengono abilitate 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 la funzionalità, devi configurare in modo esplicito le proprietà della tabella. Per ulteriori informazioni, consulta Configurare 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 Google Cloud ID progetto.
  • CATALOG_ID: l'ID del catalogo 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 da 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