Tabelas dinâmicas¶
As tabelas dinâmicas são tabelas que se atualizam automaticamente com base em uma consulta definida e na atualização do destino, simplificando a transformação de dados e o gerenciamento de pipeline sem exigir atualizações manuais ou agendamento personalizado.
Ao criar uma tabela dinâmica, você define uma consulta que especifica como os dados devem ser transformados a partir de objetos base. O Snowflake manipula o cronograma de atualização da tabela dinâmica e atualiza a tabela automaticamente para refletir as alterações feitas nos objetos base de acordo com a consulta.
Principais considerações e práticas recomendadas gerais¶
Immutability constraints: Use immutability constraints to let you control dynamic table updates. The constraints keep specific rows static while enabling incremental updates to the rest of the table. They prevent unwanted changes to marked data while they let normal refreshes occur for other parts of the table. For more information, see Explicando as restrições de imutabilidade.
Performance considerations: Dynamic tables use incremental processing for workloads that support it, which can improve performance by processing only changed data instead of recomputing entire tables. Performance depends on your query patterns and data organization. For guidance on optimizing dynamic table performance, see Desempenho e otimização de tabelas dinâmicas.
Divida tabelas dinâmicas complexas: divida seu pipeline em tabelas dinâmicas menores e focadas para melhorar o desempenho e simplificar a solução de problemas. Para obter mais informações, consulte Práticas recomendadas para criar tabelas dinâmicas.
Como funcionam as tabelas dinâmicas¶
O Snowflake executa a consulta de definição especificada na instrução CREATE DYNAMIC TABLE e suas tabelas dinâmicas são atualizadas por meio de um processo automatizado.
O diagrama a seguir mostra como esse processo calcula as alterações feitas nos objetos base e os mescla na tabela dinâmica usando recursos de computação associados a ela.
Atraso no destino¶
Use target lag to set how fresh you want your data to be. Usually, the table data freshness won’t be more than that far behind the base table data freshness. With target lag, you control how often the table refreshes and how up-to-date the data stays. Target lag affects refresh frequency and compute costs.
For more information, see Entendendo o atraso de destino da tabela dinâmica. For guidance on balancing data freshness with performance, see Otimização do desempenho da tabela dinâmica.
Atualização de tabelas dinâmicas¶
As tabelas dinâmicas tentam atualizar dentro da meta de atraso especificada por você. Por exemplo, um atraso no destino de cinco minutos garante que os dados na tabela dinâmica não fiquem mais de cinco minutos atrasados em relação às atualizações de dados na tabela base. Você define o modo de atualização ao criar a tabela e, depois, as atualizações podem ocorrer em um cronograma ou de forma manual.
Para obter mais informações, consulte Compreensão da inicialização e atualização de tabelas dinâmicas e Atualize manualmente as tabelas dinâmicas.
Quando usar tabelas dinâmicas¶
As tabelas dinâmicas são ideais para os seguintes cenários:
Você quer materializar os resultados da consulta sem escrever um código personalizado.
Você quer evitar o rastreamento manual de dependências de dados e o gerenciamento de agendamentos de atualização. As tabelas dinâmicas permitem definir os resultados do pipeline de forma declarativa, sem gerenciar manualmente as etapas de transformação.
Você quer encadear várias tabelas para transformações de dados em um pipeline.
Você não precisa de um controle minucioso sobre os cronogramas de atualização e só quer especificar uma atualização de destino para o pipeline. O Snowflake lida com a orquestração de atualizações de dados, incluindo agendamento e execução, com base nos requisitos de atualização do destino.
Exemplos de casos de uso¶
Dimensões de alteração lenta (SCDs): as tabelas dinâmicas podem ser usadas para implementar SCDs de tipo 1 e tipo 2 lendo a partir de um fluxo de alterações e usando funções de janela sobre chaves por registro ordenadas por um carimbo de data/hora de alteração. Esse método lida com inserções, exclusões e atualizações que ocorrem fora de ordem, simplificando a criação das SCDs. Para mais informações, consulte Dimensões de alteração lenta com tabelas dinâmicas.
Joins and aggregations: To enable fast queries, you can use dynamic tables to incrementally precompute slow joins and aggregations. For guidance on optimizing these operators for incremental refresh, see Otimizar consultas para atualização incremental.
Transições de lote para fluxos: as tabelas dinâmicas oferecem suporte a transições contínuas de lote para fluxos com um único comando ALTER DYNAMIC TABLE. Você pode controlar a frequência de atualização em seu pipeline para equilibrar o custo e a atualização dos dados.