Pular para o conteúdo
Lucas Lessa
Voltar para as notícias
SnowflakeGAImpacto: Médio

Evolução de partições em tabelas Apache Iceberg no Snowflake

Agora é possível alterar a especificação de partição de tabelas Iceberg gerenciadas pelo Snowflake sem reescrever dados históricos.

O que mudou

A evolução de partições permite modificar a estratégia de particionamento de tabelas Apache Iceberg gerenciadas pelo Snowflake após a sua criação, adicionando, removendo ou substituindo campos de partição sem a necessidade de reescrever os dados existentes. Os novos dados gravados passam a utilizar a especificação atualizada, enquanto os dados antigos permanecem inalterados.

Para que serve

Imagine que sua volumetria de dados cresceu e o particionamento atual por dia deixou de ser eficiente para consultas, exigindo uma estratégia por hora ou por buckets.

  • Adicionar novos campos de partição em tabelas existentes.
  • Remover campos de partição que não são mais necessários.
  • Substituir regras de partição existentes por novas especificações sem custo de reescrita.

Como usar

ALTER ICEBERG TABLE myTable ADD PARTITION BY (BUCKET(10, col1));

O que acontece nesse código:

  1. O comando altera a especificação de partição da tabela especificada.
  2. Um novo campo de partição baseado em buckets é adicionado.
  3. Apenas os dados inseridos após a execução começam a usar a nova regra.
ALTER ICEBERG TABLE myTable REPLACE PARTITION BY (BUCKET(10, col1)) WITH (BUCKET(20, col1));

O que acontece nesse código:

  1. O comando localiza o campo de partição atual baseado em 10 buckets.
  2. A regra é substituída por uma nova divisão em 20 buckets.
  3. Dados antigos permanecem na especificação anterior e novos dados utilizam a nova contagem.

Limitações e requisitos

  • Recurso disponível em General Availability (GA).
  • Válido apenas para tabelas Iceberg gerenciadas pelo Snowflake.
  • A execução do comando exige o privilégio OWNERSHIP na tabela.
  • É permitido alterar apenas um campo de partição por comando.
  • Não é possível habilitar clustering em tabelas que possuem ou já possuíram transforms de partição definidos.
  • Não é permitido excluir colunas que façam parte da especificação de partição atual ou histórica.

Como aplicar num pipeline

Útil na camada Silver ou Gold para ajustar a estratégia de armazenamento de grandes tabelas lakehouse conforme o padrão de consumo das queries evolui, evitando o esforço de recriar a tabela do zero.

Ver nota oficial do Snowflake

Apache Iceberg™ tables: Partition evolution (General availability)

Resumo e explicação gerados por IA a partir da release note oficial. Em caso de dúvida, a documentação oficial da plataforma prevalece.

Relacionadas