A alteração de uma tabela permite evoluir o esquema (como adicionar colunas) e atualizar as 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 do Iceberg de código aberto (POST /v1/{prefix}/namespaces/{namespace}/tables/{table} para CommitTable/UpdateIcebergTable).
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 Google Cloud projeto.
-
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 a tabela no modo de fornecimento de credenciais:
editor do BigLake (
roles/biglake.editor) – o projeto -
Alterar a tabela no modo de não 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 personalizados papéis ou outros predefinidos papéis.
Alterar uma tabela
Adicionar uma coluna à tabela:
Console
No Google Cloud console, acesse Lakehouse.
Selecione um catálogo atual ou crie um, se você não tiver.
Na tabela Detalhes do namespace, selecione uma tabela e expanda as opções de 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 as 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 define o requisito básico e a lista de atualizações de metadados a serem aplicadas.
Substitua:
PROJECT_ID: o ID do Google Cloud projeto.CATALOG_ID: o ID do catálogo de ambientes de execução do Lakehouse.NAMESPACE_NAME: o nome do namespace do catálogo.TABLE_NAME: o nome da tabela do Iceberg.
A seguir
- Saiba como excluir uma tabela.