Alterar uma tabela permite evoluir o esquema (como adicionar colunas) e atualizar propriedades de metadados da tabela.
As modificações são gerenciadas pelo catálogo de ambientes de execução do Lakehouse e confirmadas pela especificação da API REST Catalog do Iceberg de código aberto (POST /v1/{prefix}/namespaces/{namespace}/tables/{table} para CommitTable/UpdateIcebergTable).
Formatos de tabela compatíveis
Somente tabelas do Apache Iceberg V2 são aceitas. As tabelas do Iceberg V1 não são compatíveis. Se você tiver tabelas do Iceberg V1, faça upgrade para a V2 (por exemplo, executando ALTER TABLE catalog.schema.table SET TBLPROPERTIES ('format-version'='2'); ou usando operações de mecanismo semelhantes) antes de alterar ou gerenciar com o catálogo de tempo de execução do Lakehouse.
Antes de começar
Consulte a visão geral da tabela para entender os diferentes tipos de tabelas e as implicações do uso delas.
-
Verifique se o faturamento está ativado para o projeto do Google Cloud .
-
Ative a API BigLake.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.
Funções exigidas
Para ter as permissões necessárias para alterar uma tabela, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto e no bucket de armazenamento:
-
Alterar tabela no modo de venda de credenciais:
Editor do BigLake (
roles/biglake.editor): o projeto -
Alterar a tabela no modo sem fornecimento de 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 usando papéis personalizados ou outros papéis predefinidos.
Alterar uma tabela
Adicione uma coluna à tabela:
Console
No console Google Cloud , acesse Lakehouse.
Selecione um catálogo ou crie um, caso ainda não tenha.
Na tabela Detalhes do namespace, selecione uma tabela e expanda as opções do menu.
Clique em Editar.
Atualize os valores da tabela na caixa de diálogo.
Clique em Salvar.
Spark
spark.sql("ALTER TABLE TABLE_NAME ADD COLUMNS ( desc string);")
spark.sql("DESCRIBE NAMESPACE_NAME.TABLE_NAME").show()
Trino
ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;
REST
Para confirmar mudanças em uma tabela do Iceberg usando a API REST, faça uma solicitação POST
para o endpoint UpdateIcebergTable (CommitTable):
POST /iceberg/v1/restcatalog/v1/projects/PROJECT_ID/catalogs/CATALOG_ID/namespaces/NAMESPACE_NAME/tables/TABLE_NAME
O corpo da solicitação precisa conter um payload JSON CommitTableRequest do Iceberg válido que defina o requisito básico e a lista de atualizações de metadados a serem aplicadas.
Substitua:
PROJECT_ID: o ID do projeto Google Cloud .CATALOG_ID: o ID do catálogo do ambiente de execução do Lakehouse.NAMESPACE_NAME: o nome do namespace do catálogo.TABLE_NAME: o nome da sua tabela Iceberg.
A seguir
- Saiba como excluir uma tabela.