A modificação de dados permite atualizar, excluir e mesclar registros nas tabelas do Apache Iceberg no catálogo de ambientes de execução do Lakehouse.
Quando a DML do BigQuery está ativada na tabela, é possível executar instruções DML padrão do BigQuery com mecanismos de código aberto, como Spark e Trino, alcançando a interoperabilidade de gravação completa em uma única cópia de dados armazenada no Cloud Storage.
Antes de começar
-
Verifique se o faturamento está ativado para o Google Cloud projeto.
-
Ative a API BigLake.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter a permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel Administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis. - Configure o catálogo de ambientes de execução do Lakehouse com o endpoint do catálogo REST do Apache Iceberg.
Funções exigidas
Para ter as permissões necessárias para modificar dados em uma tabela, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto e no bucket do Cloud Storage:
-
Gravar dados da tabela no modo de distribuição de credenciais: Editor do BigLake (
roles/biglake.editor) – o projeto -
Gravar dados da tabela no modo de distribuição de não credenciais:
- Editor do BigLake (
roles/biglake.editor) – o projeto - Usuário de objetos do Storage (
roles/storage.objectUser) – o bucket do Cloud Storage
- Editor do BigLake (
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Recursos e suporte da tabela
Ao usar tabelas no catálogo de ambientes de execução do Lakehouse, é útil entender os diferentes tipos de tabela e os recursos de ativação de recursos. Para saber mais sobre o uso de tabelas do Apache Iceberg, consulte Visão geral das tabelas do Apache Iceberg.
Tabelas do Iceberg com suporte
Somente as tabelas do Apache Iceberg V2 (GA) e V3 (pré-lançamento) são compatíveis. As tabelas do Iceberg V1 não são compatíveis. Para fazer upgrade das tabelas V1 atuais, consulte Fazer upgrade das tabelas do Iceberg V1 para V2.
Usar opções de tabela (pré-lançamento)
É possível ativar o uso de recursos gerenciados do BigQuery, como a linguagem de manipulação de dados (DML) do BigQuery e o gerenciamento automático de tabelas, configurando propriedades específicas da tabela. Esses recursos são ativados de maneiras diferentes, dependendo de onde a tabela é criada:
- No BigQuery:a DML do BigQuery e o gerenciamento automático de tabelas são ativados por padrão.
- Em mecanismos de código aberto:para ativar, é necessário configurar explicitamente as propriedades da tabela. Consulte Configurar opções de tabela para mais informações.
Atualizar dados
Atualize as linhas atuais na tabela:
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;
Substitua:
PROJECT_ID: o Google Cloud ID do projeto.CATALOG_ID: o ID do catálogo de ambientes de execução do Lakehouse.NAMESPACE: o nome do namespace do Iceberg.TABLE_NAME: o nome da tabela do Iceberg.
Excluir dados
Exclua linhas específicas da tabela:
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;
Mesclar dados
Mescle dados de uma tabela de origem na tabela de destino do Iceberg:
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);
A seguir
- Saiba como consultar uma tabela.
- Saiba como configurar opções de tabela.