CREATE DYNAMIC TABLE

Cria uma tabela dinâmica, com base em uma consulta especificada.

Consulte também:

ALTER DYNAMIC TABLE, DESCRIBE DYNAMIC TABLE, DROP DYNAMIC TABLE, SHOW DYNAMIC TABLES

Neste tópico:

Sintaxe

CREATE [ OR REPLACE ] DYNAMIC TABLE <name>
  TARGET_LAG = { '<num> { seconds | minutes | hours | days }' | DOWNSTREAM }
  WAREHOUSE = <warehouse_name>
  AS <query>
  [ COMMENT = '<string_literal>' ]
Copy

Parâmetros obrigatórios

name

Especifica o identificador (ou seja, nome) da tabela dinâmica; deve ser único para o esquema no qual a tabela dinâmica é criada.

Além disso, o identificador deve começar com um caractere alfabético e não pode conter espaços ou caracteres especiais, a menos que toda a cadeia de caracteres do identificador esteja entre aspas duplas (por exemplo, "My object"). Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais detalhes, consulte Requisitos para identificadores.

TARGET_LAG = { num { seconds | minutes | hours | days } | DOWNSTREAM }

Especifica o atraso para a tabela dinâmica:

'num seconds | minutes | hours | days'

Especifica a quantidade máxima de tempo que o conteúdo da tabela dinâmica deve atrasar as atualizações nas tabelas de base.

Por exemplo:

  • Se os dados na tabela dinâmica não demorarem mais de 5 minutos, especifique 5 minutes.

  • Se os dados na tabela dinâmica não demorarem mais de 5 horas, especifique 5 hours.

O valor mínimo é de 1 minuto. Se a tabela dinâmica A depender de outra tabela dinâmica B, o atraso mínimo de A deverá ser maior ou igual ao atraso de B.

DOWNSTREAM

Especifica que a tabela dinâmica deve ser atualizada somente quando as tabelas dinâmicas que dependem dela forem atualizadas.

WAREHOUSE = warehouse_name

Especifica o nome do warehouse que fornece os recursos de computação para atualizar a tabela dinâmica.

Você deve ter o privilégio USAGE neste warehouse para criar a tabela dinâmica.

AS query

Especifica a consulta cujos resultados devem estar contidos na tabela dinâmica.

Parâmetros opcionais

COMMENT = 'string_literal'

Especifica um comentário para a tabela dinâmica.

Padrão: sem valor.

Requisitos de controle de acesso

Uma função usada para executar este comando SQL deve ter os seguintes privilégios no mínimo:

Privilégio

Objeto

Notas

CREATE DYNAMIC TABLE

Esquema no qual você planeja criar a tabela dinâmica.

SELECT

Tabelas, exibições e tabelas dinâmicas que você planeja consultar para a nova tabela dinâmica.

USAGE

Warehouse que você planeja usar para atualizar a tabela.

Observe que operar em qualquer objeto de um esquema também requer o privilégio USAGE no banco de dados e esquema principais.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

Quando você executar o comando CREATE DYNAMIC TABLE, a função atual em uso se torna a proprietária da tabela dinâmica. Essa função é usada para executar atualizações da tabela dinâmica em segundo plano.

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. Consulte Tabelas dinâmicas e rastreamento de alterações.

Os clientes devem garantir que nenhum dado pessoal (exceto para um objeto do usuário), dados sensíveis, dados controlados por exportação ou outros dados regulamentados sejam inseridos como metadados ao usar o serviço Snowflake. Para obter mais informações, consulte Campos de metadados no Snowflake.

Exemplos

Crie uma tabela dinâmica chamada product:

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

Neste exemplo:

  • A tabela dinâmica materializa os resultados de uma consulta das colunas product_id e product_name da tabela staging_table.

  • A meta do tempo de atraso é de 20 minutos, o que significa que os dados na tabela dinâmica não devem ser mais de 20 minutos mais antigos do que os dados em staging_table.

  • O processo de atualização automatizada usa os recursos de computação no warehouse mywh para atualizar os dados na tabela dinâmica.