Criação de tabelas dinâmicas

As tabelas dinâmicas podem ser criadas e eliminadas de forma muito parecida com as tabelas tradicionais, mas existem algumas diferenças e limitações. Além disso, alterar as tabelas subjacentes, exibições e outras tabelas dinâmicas que compõem uma consulta de tabela dinâmica pode causar alterações de comportamento ou tornar inoperante uma tabela dinâmica existente. As seções a seguir descrevem a criação e descarte de tabelas dinâmicas e algumas limitações e preocupações.

Tarefa

Descrição

Criação de uma tabela dinâmica

Criação de tabelas dinâmicas, incluindo privilégios necessários para criar uma tabela dinâmica.

Descarte de uma tabela dinâmica

Descarte de tabelas dinâmicas.

Construções de consulta não suportadas atualmente em tabelas dinâmicas

Construções de consulta não suportadas.

Funções não determinísticas suportadas em tabelas dinâmicas

Funções não determinísticas suportadas.

Tabelas dinâmicas e rastreamento de alterações

Compreensão da criação de tabelas dinâmicas e o controle de alterações.

Criação de uma tabela dinâmica

Para criar uma tabela dinâmica, use o comando CREATE DYNAMIC TABLE, especificando a consulta a ser usada, o atraso de destino dos dados e o warehouse a ser usado para executar as atualizações.

Por exemplo, suponha que você queira criar uma tabela dinâmica chamada product que contenha as colunas product_id e product_name da tabela chamada staging_table e você decide:

  • Você quer que os dados na tabela product estejam no máximo 20 minutos atrás dos dados na staging_table.

  • Você deseja usar o warehouse mywh para os recursos de computação necessários para as atualizações (incrementais e completas).

Para criar esta tabela dinâmica, execute a seguinte instrução CREATE DYNAMIC TABLE SQL:

CREATE OR REPLACE DYNAMIC TABLE product
  TARGET_LAG = '20 minutes'
  WAREHOUSE = mywh
  AS
    SELECT product_id, product_name FROM staging_table;
Copy

Assim como acontece com a exibição materializada, as colunas em uma tabela dinâmica são determinadas pelas colunas especificadas na instrução SELECT usada para criar a tabela dinâmica. Para colunas que são expressões, você deve especificar aliases para as colunas na instrução SELECT.

Você deve garantir que todos os objetos usados pela consulta de tabela dinâmica tenham o controle de alterações ativado. Consulte Tabelas dinâmicas e rastreamento de alterações neste tópico para obter detalhes adicionais.

Nota

Se a consulta depender de outra tabela dinâmica, consulte Como os dados são atualizados quando as tabelas dinâmicas dependem de outras tabelas dinâmicas para obter orientações sobre como escolher o tempo de atraso de destino.

Observe também que o TARGET_LAG mínimo para qualquer tabela dinâmica é de um minuto.

Privilégios necessários para criar tabelas dinâmicas

Para criar uma tabela dinâmica, você deve ter os seguintes privilégios:

  • USAGE no banco de dados e esquema no qual você planeja criar a tabela.

  • CREATE DYNAMIC TABLE no esquema no qual você planeja criar a tabela.

  • SELECT nas tabelas e exibições existentes que você planeja consultar para a tabela dinâmica.

  • USAGE no warehouse que você planeja usar para atualizar a tabela.

Para consultar uma tabela dinâmica ou criar uma tabela dinâmica que consulte outra tabela dinâmica, você deve ter os seguintes privilégios:

  • SELECT na tabela dinâmica.

Descarte de uma tabela dinâmica

Para descartar uma tabela dinâmica, você pode usar os comandos Snowsight ou SQL.

Snowsight
  1. No Snowsight, abra a página de detalhes da tabela dinâmica (instruções).

  2. No menu More no canto superior direito da página, selecione Drop.

SQL
  • Use o comando DROP DYNAMIC TABLE.

    Por exemplo, para descartar a tabela dinâmica chamada product:

DROP DYNAMIC TABLE product;
Copy

Como compreender os efeitos das alterações nas colunas das tabelas de base

As colunas nas tabelas de base, exibições e tabelas dinâmicas subjacentes podem mudar com o tempo. Algumas alterações podem afetar a própria tabela dinâmica; outras podem ter impacto limitado ou nenhum impacto.

Quando os objetos subjacentes associados a uma tabela dinâmica mudam, os seguintes comportamentos se aplicam:

Mudança

Impacto

  • Nova coluna adicionada.

  • Coluna não utilizada existente removida.

Nenhum. Se uma nova coluna for adicionada à tabela de base ou uma coluna não utilizada for excluída, nenhuma ação ocorrerá e as atualizações continuarão como antes.

  • A tabela de base subjacente é recriada com nomes e tipos de coluna idênticos.

  • A coluna da tabela de base subjacente é recriada com o mesmo nome e tipo.

Atualização/reinicialização completa: durante o próximo ciclo de atualização, uma atualização completa é feita para garantir que nenhum dado incorreto ou obsoleto esteja na tabela dinâmica.

  • Uma coluna subjacente ou outro elemento usado por uma tabela dinâmica muda de nome ou de alguma outra forma.

O estado da tabela dinâmica muda para FAILING. A tabela dinâmica deve ser recriada para responder à alteração. Para obter mais informações sobre os estados de tabela dinâmica, consulte Estados da tabela dinâmica.

Limitações da tabela dinâmica e funções suportadas

As tabelas dinâmicas diferem das tabelas tradicionais porque determinadas construções e funções de consulta não são permitidas. Além disso, a otimização de pesquisa, o clustering e o serviço de aceleração de consulta (QAS) não são suportados. As seções a seguir descrevem essas limitações.

Construções de consulta não suportadas atualmente em tabelas dinâmicas

As construções a seguir não são suportadas atualmente na consulta para uma tabela dinâmica. Se você especificá-las na consulta para uma tabela dinâmica, ocorrerá um erro.

Funções não determinísticas suportadas em tabelas dinâmicas

As seguintes funções não determinísticas são suportadas em tabelas dinâmicas. Observe que essas funções são suportadas apenas para atualizações completas.

Tabelas dinâmicas e rastreamento de alterações

As tabelas dinâmicas são atualizadas à medida que os objetos de banco de dados subjacentes mudam. O rastreamento de alterações deve ser ativado em todos os objetos subjacentes usados por uma tabela dinâmica.

O Snowflake tentará ativar o rastreamento de alterações em todos os objetos subjacentes quando uma tabela dinâmica for criada. No entanto, o usuário que cria a tabela dinâmica pode não ter privilégios suficientes para ativar o rastreamento de alterações em todos os objetos subjacentes.

Para evitar erros ao atualizar tabelas dinâmicas, use SHOW VIEWS, SHOW TABLES e comandos semelhantes e examine a coluna CHANGE_TRACKING para determinar se o rastreamento de alterações está habilitado para um objeto de banco de dados específico.

Use ALTER TABLE, ALTER VIEW e a documentação relacionada para habilitar o rastreamento de alterações em um objeto de banco de dados específico.