Uso de restrições de imutabilidade¶
Para informar ao Snowflake que certas linhas não mudarão em uma tabela dinâmica, use a cláusula IMMUTABLE WHERE em uma instrução CREATE DYNAMIC TABLE ou ALTER DYNAMIC TABLE.
A imutabilidade torna as atualizações mais rápidas, ignorando as linhas que não mudam. O preenchimento com imutabilidade proporciona benefícios de desempenho imediatos e contínuos:
Criação inicial: o preenchimento copia os dados históricos instantaneamente, sem custos de computação. Isso torna as tabelas com anos de dados históricos disponíveis imediatamente, em vez de exigir atualizações iniciais caras.
Atualizações em andamento: restrições de imutabilidade protegem os dados já preenchidos de serem reprocessados durante atualizações futuras. Somente a região mutável é atualizada, mantendo os tempos de atualização rápidos mesmo conforme a tabela cresce.
Para saber o contexto conceitual, consulte Explicando as restrições de imutabilidade.
Exemplos básicos¶
Exemplo: Como impedir a recomputação quando uma tabela de dimensões for alterada¶
Ao atualizar uma linha em uma tabela de dimensões, apenas os fatos do período imutável devem ser processados novamente:
Exemplo: Reter dados por mais tempo que a tabela de origem¶
Crie uma tabela dinâmica que retenha dados analisados por mais tempo do que a tabela de preparação e exclua os dados de preparação antigos com uma tarefa:
Exemplo: Deixar as tabelas downstream usarem a atualização incremental de uma tabela de atualização completa¶
Algumas construções de consulta (como funções de tabela definidas pelo usuário em Python) exigem o modo de atualização completa. As restrições de imutabilidade permitem que tabelas downstream ainda usem a atualização incremental:
Exemplos de preenchimento¶
Os exemplos a seguir mostram como criar novas tabelas dinâmicas a partir de tabelas com dados preenchidos.
A tabela de preenchimento deve conter colunas correspondentes com tipos de dados compatíveis na mesma ordem que a tabela dinâmica. O Snowflake não copia propriedades ou privilégios da tabela de preenchimento.
Se você especificar os parâmetros de Time Travel AT | BEFORE, o Snowflake copia os dados da tabela de preenchimento no momento especificado.
As seguintes limitações se aplicam quando você trabalha com restrições de imutabilidade e dados preenchidos:
Atualmente, apenas tabelas regulares e dinâmicas podem ser usadas para preenchimento.
Não é possível especificar políticas ou tags na nova tabela dinâmica porque elas são copiadas da tabela de preenchimento.
As chaves de clustering na nova tabela dinâmica e na tabela de preenchimento devem ser as mesmas.
Exemplo: Preenchimento de uma parte da tabela¶
O exemplo a seguir preenche a região imutável de my_dynamic_table de my_backfill_table e a região mutável da definição da tabela dinâmica.
Quando você reinicia esta tabela dinâmica:
Modo de atualização incremental: o Snowflake exclui todas as linhas mutáveis e preenche de novo somente a região variável.
Modo de atualização completa: o Snowflake realiza uma atualização completa com o mesmo efeito.
Exemplo: Usar o preenchimento para recuperar ou modificar dados em uma tabela dinâmica¶
Você não pode editar diretamente os dados ou a definição de uma tabela dinâmica. Para recuperar ou corrigir dados, execute as seguintes etapas:
Clone a tabela dinâmica em uma tabela regular.
Modifique a tabela clonada conforme necessário.
Preencha a tabela editada em uma nova tabela dinâmica.
No exemplo a seguir, my_dynamic_table agrega dados de vendas diárias da tabela base sales:
Opcionalmente, você pode arquivar os dados antigos para economizar custos de armazenamento:
Mais tarde, você encontra um erro de vendas em 2025-05-01, em que sales_count deve ser 2. Para corrigir isso:
Clone
my_dynamic_tablepara uma tabela regular:Atualize a tabela clonada:
Recrie a tabela dinâmica usando o clone editado como fonte do preenchimento.
Esse método permite recuperar ou corrigir dados em uma tabela dinâmica sem modificar a tabela base:
Exemplo: Uso do preenchimento para modificar o esquema de uma tabela dinâmica¶
Você não pode alterar diretamente o esquema de uma tabela dinâmica. Para atualizar o esquema (por exemplo, adicionar uma coluna), siga estas etapas:
Clone a tabela dinâmica em uma tabela regular. O exemplo a seguir usa
my_dynamic_tablecriada a partir desales(antes de).Modifique o esquema da tabela clonada:
Opcionalmente, adicione dados à nova coluna.
Recrie a tabela dinâmica usando o clone editado como fonte do preenchimento.
Verifique se a nova coluna aparece na tabela dinâmica:
Verificação do status de imutabilidade¶
Para verificar se uma linha de uma tabela dinâmica é mutável, consulte a coluna METADATA$IS_IMMUTABLE:
Para visualizar a restrição de imutabilidade em uma tabela dinâmica, execute SHOW DYNAMIC TABLES e verifique a coluna immutable_where.