Alterar uma tabela

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.

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

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

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

  1. No Google Cloud console, acesse Lakehouse.

    Acessar o Lakehouse

  2. Selecione um catálogo atual ou crie um, se você não tiver.

  3. Na tabela Detalhes do namespace, selecione uma tabela e expanda as opções de 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 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