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.

Antes de começar

  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

  3. 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 alterar uma tabela, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto e no bucket do Cloud Storage:

  • Alterar a tabela no modo de fornecimento de credenciais: editor do BigLake (roles/biglake.editor) - o projeto
  • Alterar a tabela no modo de fornecimento 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

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 de tabela específicas. 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.
  • De 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.

Consulte Configurar opções de tabela para instruções detalhadas.

Alterar uma tabela

Adicionar uma coluna à tabela:

Console

  1. Noconsole, acesse Lakehouse. Google Cloud

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

Para ativar a interoperabilidade de leitura/gravação e o gerenciamento de tabelas, defina as propriedades usando a SET TBLPROPERTIES cláusula:

SET TBLPROPERTIES (
  'gcp.biglake.bigquery-dml.enabled' = true,
  'gcp.biglake.table-management.enabled' = true
)

Trino

ALTER TABLE TABLE_NAME ADD COLUMN desc varchar;
DESCRIBE SCHEMA_NAME.TABLE_NAME;

Para ativar a interoperabilidade de leitura/gravação e o gerenciamento de tabelas, é possível configurar as seguintes propriedades de tabela:

  • 'gcp.biglake.bigquery-dml.enabled' = true
  • 'gcp.biglake.table-management.enabled' = true

gcloud

Para atualizar as propriedades da tabela usando gcloud, execute o gcloud biglake iceberg tables update comando.

gcloud biglake iceberg tables update TABLE_NAME \
    --project="PROJECT_ID" \
    --catalog="CATALOG_ID" \
    --namespace="NAMESPACE_NAME" \
    --update-properties="KEY=VALUE,..."

Substitua:

  • TABLE_NAME: o nome da tabela do Iceberg.
  • PROJECT_ID: o ID do Google Cloud projeto.
  • CATALOG_ID: o ID do catálogo.
  • NAMESPACE_NAME: o nome do namespace do catálogo.
  • KEY=VALUE,...: propriedades da tabela a serem adicionadas ou atualizadas.

BigQuery

Para atualizar as propriedades da tabela de uma tabela do Apache Iceberg no catálogo de ambientes de execução do Lakehouse do BigQuery (como ativar a DML do BigQuery ou o gerenciamento automático de tabelas), use a seguinte instrução ALTER TABLE do GoogleSQL:

ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
SET OPTIONS (`properties.gcp.biglake.table-management` = "enabled");

Para atualizar o esquema e adicionar uma coluna em uma tabela do Apache Iceberg no catálogo de ambientes de execução do Lakehouse do BigQuery, use a seguinte instrução ALTER TABLE do GoogleSQL:

ALTER TABLE `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`
ADD COLUMN new_column STRING;

Substitua:

  • PROJECT_ID: o ID do Google Cloud 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.

REST

Para confirmar as alterações em uma tabela do Iceberg usando a API REST, faça uma POST solicitação para o UpdateIcebergTable (CommitTable) endpoint:

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 válido do Iceberg 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.
  • NAMESPACE_NAME: o nome do namespace do catálogo.
  • TABLE_NAME: o nome da tabela do Iceberg.

A seguir