Tabelas dinâmicas comparadas a fluxos e tarefas e a exibições materializadas

Assim como os fluxos e tarefas, as tabelas dinâmicas fornecem uma maneira de transformar dados em seu pipeline.

Tabelas dinâmicas comparadas a fluxos e tarefas

Embora as tabelas dinâmicas tenham uma finalidade semelhante em comparação com as tarefas, existem diferenças importantes.

Comparison between streams/tasks and dynamic tables

Fluxos e tarefas

Tabelas dinâmicas

As tarefas usam uma abordagem imperativa: você escreve código processual para transformar dados de tabelas base.

As tabelas dinâmicas usam uma abordagem declarativa: você escreve uma consulta que especifica o resultado desejado e os dados são recuperados e transformados a partir das tabelas base usadas na consulta.

Você define um cronograma para executar o código que transforma os dados.

Um processo de atualização automatizado determina o agendamento para execução de atualizações. O processo agenda essas atualizações para atender ao nível alvo especificado de atualização (atraso).

O código de procedimento pode conter chamadas para código não determinístico, procedimentos armazenados e outras tarefas. O código processual pode conter chamadas para UDFs e funções externas.

Mesmo que a instrução SELECT para uma tabela dinâmica possa conter junções, agregações, funções de janela e outras funções e construções SQL, a instrução não pode conter chamadas para tarefas e procedimentos armazenados. Atualmente, a instrução SELECT também não pode conter chamadas para funções externas.

Essa limitação se deve à forma como as tabelas dinâmicas são atualizadas. Para atualizar os dados, um processo automatizado analisa a instrução SELECT para a tabela dinâmica para determinar a melhor abordagem para atualizar os dados. O processo automatizado não pode determinar isso para certos tipos de consultas.

Para obter a lista completa de restrições na instrução SELECT, consulte Tipos de consultas compatíveis com atualizações incrementais e Construções de consulta não suportadas atualmente em tabelas dinâmicas.

As tarefas podem usar fluxos para atualizar dados em tabelas de destino de forma incremental. Você pode agendar essas tarefas para serem executadas regularmente.

Um processo de atualização automatizado realiza atualizações incrementais de tabelas dinâmicas regularmente. O processo determina o agendamento com base no “nível de atualização” desejado dos dados que você especifica.

Tabelas dinâmicas comparadas a exibições materializadas

As tabelas dinâmicas têm algumas semelhanças com as exibições materializadas, pois ambas materializam os resultados de uma consulta. No entanto, existem diferenças importantes:

Exibições materializadas

Tabelas dinâmicas

Exibições materializadas são projetadas para melhorar o desempenho da consulta de forma transparente.

Por exemplo, se você consultar a tabela de base, o otimizador de consulta no Snowflake poderá reescrever a consulta automaticamente para consultar a exibição materializada.

As tabelas dinâmicas são projetadas para construir pipelines de dados multinível.

Embora as tabelas dinâmicas possam melhorar o desempenho da consulta, o otimizador de consulta no Snowflake não reescreve automaticamente as consultas para usar tabelas dinâmicas. Uma tabela dinâmica é usada em uma consulta somente se você especificar a tabela dinâmica na consulta.

Uma exibição materializada pode usar apenas uma única tabela de base. Uma exibição materializada não pode ser baseada em uma consulta complexa (ou seja, uma consulta com junções ou exibições aninhadas).

Uma tabela dinâmica pode ser baseada em uma consulta complexa, incluindo uma com junções e uniões.

Os dados acessados por meio de exibições materializadas são sempre atuais. Se uma operação DML alterar os dados na tabela de base, o Snowflake atualizará a exibição materializada ou usará os dados atualizados da tabela de base.

Os dados são atuais até o tempo de atraso de destino para a tabela dinâmica.

A manutenção da exibição materializada é gerenciada automaticamente por um serviço de computação separado, incluindo lógica de atualização, juntamente com a computação para quaisquer atualizações, normalmente com custo adicional.