Alterar uma tabela

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.

  1. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  2. 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ão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

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

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

  1. No console Google Cloud , acesse Lakehouse.

    Acessar o lakehouse

  2. Selecione um catálogo ou crie um, caso ainda não tenha.

  3. Na tabela Detalhes do namespace, selecione uma tabela e expanda as opções do menu.

  4. Clique em Editar.

  5. Atualize os valores da tabela na caixa de diálogo.

  6. 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