Criação de tabelas dinâmicas¶
Este tópico descreve os principais conceitos para a criação de tabelas dinâmicas, juntamente com o que ocorre durante o processo de inicialização.
Antes de começar, verifique se você tem os privilégios para criar tabelas dinâmicas e se todos os objetos usados pela consulta de tabela dinâmica têm o rastreamento de alterações ativado.
Algumas limitações podem ser aplicadas à criação de tabelas dinâmicas. Para obter uma lista completa, consulte Limitações conhecidas para tabelas dinâmicas.
Habilitar o rastreamento de alterações¶
O Snowflake tenta automaticamente ativar o rastreamento de alterações em todos os objetos subjacentes quando uma tabela dinâmica é criada. Conforme os objetos subjacentes do banco de dados mudam, a tabela dinâmica também muda. Se você recriar um objeto, deverá reativar o rastreamento de alterações.
Ao criar uma tabela dinâmica com atualização incremental, se o rastreamento de alterações ainda não estiver habilitado nas tabelas que ele consulta, o Snowflake tentará automaticamente habilitar o rastreamento de alterações nelas. Para oferecer suporte a atualizações incrementais, o rastreamento de alterações deve ser ativado com retenção no Time Travel diferente de zero em todos os objetos subjacentes usados por uma tabela dinâmica.
Para ativar o rastreamento de alterações em um objeto de banco de dados específico, use ALTER TABLE, ALTER VIEW e comandos semelhantes nesse objeto. O usuário que cria a tabela dinâmica deve ter o privilégio OWNERSHIP para habilitar o rastreamento de alterações em todos os objetos subjacentes. Para verificar se o rastreamento de alterações está habilitado, use SHOW VIEWS, SHOW TABLES e comandos semelhantes nos objetos subjacentes e inspecione a coluna change_tracking
.
Sintaxe para criação de tabelas dinâmicas¶
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 nastaging_table
.Você deseja usar o warehouse
mywh
para os recursos de computação necessários para a atualização.Você deseja que o tipo de atualização seja escolhido automaticamente e que a tabela dinâmica seja atualizada de forma síncrona na criação.
Para criar esta tabela dinâmica, você teria que executar a seguinte instrução CREATE DYNAMIC TABLE SQL:
CREATE OR REPLACE DYNAMIC TABLE product
TARGET_LAG = '20 minutes'
WAREHOUSE = mywh
REFRESH_MODE = auto
INITIALIZE = on_create
AS
SELECT product_id, product_name FROM staging_table;
Para obter uma lista completa de parâmetros e sintaxe variante, consulte a referência CREATE DYNAMIC TABLE.
Inicialização da tabela dinâmica¶
Quando você cria uma tabela dinâmica usando uma instrução CREATE DYNAMIC TABLE, sua atualização inicial ocorre em um horário agendado ou de forma síncrona na criação. O preenchimento inicial de dados, ou inicialização, depende de quando a atualização inicial ocorre.
As tabelas dinâmicas são atualizadas com base na meta de atraso especificado, que define o tempo máximo permitido para o conteúdo da tabela dinâmica ficar atrasado em relação às atualizações das tabelas base. Se você especificar uma tabela dinâmica para ser atualizada de forma síncrona na criação, ela será inicializada imediatamente. No entanto, se uma tabela dinâmica for configurada para atualização em um horário agendado, ela será inicializada dentro do horário especificado para a meta de atraso.
Por exemplo, considere uma tabela dinâmica, DT1, com uma meta de atraso de 30 minutos. O preenchimento inicial de dados para DT1 pode ocorrer da seguinte forma:
Se DT1 estiver configurado para atualizar de forma síncrona na criação (padrão), ele será inicializado na criação.
Se DT1 estiver definido para atualização em um horário agendado, ele será inicializado dentro do horário especificado para a meta de atraso.
Em cenários que envolvem dependências downstream, as tabelas dinâmicas mudam. Considere as tabelas dinâmicas DT1 e DT2, em que DT1 tem uma meta de atraso downstream e DT2 tem uma meta de atraso de 30 minutos e depende de DT1. DT1, com sua meta de atraso downstream, é atualizado somente quando tabelas dinâmicas dependentes, como DT2, são atualizadas.
Para DT1 neste contexto:
Se definido para atualizar de forma síncrona na criação, ele será atualizado e inicializado na criação. Se a inicialização falhar, o processo de criação da tabela será parado, fornecendo feedback imediato sobre quaisquer definições incorretas.
Se configurada para atualização em um horário agendado, a inicialização dependerá de quando DT2, a tabela dependente, for atualizada.
A inicialização pode levar algum tempo, dependendo da quantidade de dados digitalizados. Para acompanhar o progresso, você pode consultar o histórico de atualizações usando a função DYNAMIC_TABLE_REFRESH_HISTORY.
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 |
---|---|
|
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. |
|
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. |
|
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. |