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>' ]
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;
Neste exemplo:
A tabela dinâmica materializa os resultados de uma consulta das colunas
product_id
eproduct_name
da tabelastaging_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.