CREATE EVENT TABLE¶
Cria uma tabela de eventos que captura eventos, incluindo mensagens registradas de funções e procedimentos.
- Consulte também:
ALTER TABLE (tabelas de eventos) , DESCRIBE EVENT TABLE, DROP TABLE, SHOW EVENT TABLES
Sintaxe¶
CREATE [ OR REPLACE ] EVENT TABLE [ IF NOT EXISTS ] <name>
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ CHANGE_TRACKING = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COPY GRANTS ]
[ [ WITH ] COMMENT = '<string_literal>' ]
[ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Sintaxe da variante¶
CREATE EVENT TABLE … CLONE¶
Cria uma nova tabela de evento com as mesmas definições de coluna predefinidas e contendo todos os dados existentes da tabela de origem sem realmente copiar os dados. Você também pode usar essa variante para clonar uma tabela de evento em um momento/ponto específico no passado (usando o Time Travel):
CREATE [ OR REPLACE ] EVENT TABLE [ IF NOT EXISTS ] <name>
CLONE <source_table>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
[ COPY GRANTS ]
[ ... ]
Nota
Se a instrução substituir uma tabela de evento com o mesmo nome, as concessões serão copiadas da tabela de eventos que está sendo substituída. Caso contrário, as concessões são copiadas da tabela de evento de origem que está sendo clonada.
Para obter mais detalhes sobre COPY GRANTS, consulte COPY GRANTS neste documento.
Para obter mais detalhes sobre clonagem, consulte CREATE <objeto> … CLONE.
Parâmetros obrigatórios¶
name
Especifica o identificador (o nome) da tabela de eventos; deve ser único para o esquema no qual a tabela de eventos é 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.
source_table
Necessário para CLONE.
Especifica a tabela de evento a ser usada como fonte para o clone.
Parâmetros opcionais¶
CLUSTER BY ( expr [ , expr , ... ] )
Especifica uma ou mais colunas ou expressões de colunas na tabela como a chave de clustering. Para obter mais detalhes, consulte Chaves de clustering e tabelas clusterizadas.
Padrão: sem valor (nenhuma chave de clustering está definida para a tabela)
Importante
As chaves de clustering não são destinadas ou recomendadas para todas as tabelas; elas normalmente são vantajosas para tabelas muito grandes (ou seja, com vários terabytes).
Antes de especificar uma chave de clustering para uma tabela, leia Explicação das estruturas de tabela do Snowflake.
DATA_RETENTION_TIME_IN_DAYS = integer
Especifica o período de retenção da tabela para que as ações do Time Travel (SELECT, CLONE, UNDROP) possam ser executadas nos dados históricos na tabela. Para obter mais detalhes, consulte Compreensão e uso do Time Travel.
Para uma descrição detalhada deste parâmetro de nível de objeto, bem como mais informações sobre parâmetros de objeto, consulte Parâmetros.
Valores:
Standard Edition:
0
ou1
Enterprise Edition:
0
a90
para tabelas permanentes
Padrão:
Standard Edition:
1
Enterprise Edition (ou superior):
1
(a menos que um valor padrão diferente tenha sido especificado no esquema, banco de dados ou nível de conta)
Nota
Um valor de
0
desabilita efetivamente o Time Travel para a tabela.MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
Parâmetro de objeto que especifica o número máximo de dias para os quais o Snowflake pode estender o período de retenção de dados da tabela para evitar que os fluxos na tabela se tornem obsoletos.
Para uma descrição detalhada deste parâmetro, consulte MAX_DATA_EXTENSION_TIME_IN_DAYS.
CHANGE_TRACKING = TRUE | FALSE
Especifica se deve permitir o rastreamento de alterações na tabela.
TRUE
habilita o rastreamento de alterações na tabela. Esta configuração adiciona um par de colunas ocultas à tabela de origem e começa a armazenar os metadados de rastreamento de alterações nas colunas. Estas colunas consomem uma pequena quantidade de armazenamento.Os metadados de rastreamento de alterações podem ser consultados usando a cláusula CHANGES para instruções SELECT ou criando e consultando um ou mais fluxos na tabela.
FALSE
não permite o rastreamento de alterações na tabela.
Padrão: FALSE
DEFAULT_DDL_COLLATION = 'collation_specification'
Determina uma especificação de agrupamento padrão para as colunas da tabela.
Para obter mais detalhes sobre o parâmetro, consulte DEFAULT_DDL_COLLATION.
COPY GRANTS
Especifica manter os privilégios de acesso da tabela original quando uma nova tabela é criada usando qualquer uma das seguintes variantes CREATE TABLE:
CREATE OR REPLACE TABLE
CREATE TABLE … CLONE
O parâmetro copia todos os privilégios, exceto OWNERSHIP, da tabela existente para a nova tabela. A nova tabela não herda as concessões futuras definidas para o tipo de objeto no esquema. Por padrão, a função que executa a instrução CREATE EVENT TABLE é a proprietária da nova tabela.
Se o parâmetro não estiver incluído na instrução CREATE EVENT TABLE, então a nova tabela não herdará nenhum privilégio de acesso explícito concedido na tabela original, mas herda qualquer concessão futura definida para o tipo de objeto no esquema.
Nota:
Com compartilhamento de dados:
Se a tabela existente foi compartilhada com outra conta, a tabela de substituição também será compartilhada.
Se a tabela existente foi compartilhada com sua conta como consumidor de dados, e o acesso foi ainda concedido a outras funções na conta (usando
GRANT IMPORTED PRIVILEGES
no banco de dados pai), o acesso também é concedido à tabela de substituição.
A saída SHOW GRANTS para a tabela de substituição relaciona o cessionário para os privilégios copiados como a função que executou a instrução CREATE EVENT TABLE, com o carimbo de data/hora atual quando a instrução foi executada.
A operação de cópia de concessões ocorre atomicamente no comando CREATE EVENT TABLE (isto é, dentro da mesma transação).
ROW ACCESS POLICY policy_name ON ( col_name [ , col_name ... ] )
Especifica a política de acesso a linhas a ser definida em uma tabela.
COMMENT = 'string_literal'
Especifica um comentário para a tabela.
Padrão: sem valor
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Especifica o nome da tag e o valor da cadeia de caracteres dela.
O valor de tag é sempre uma cadeia de caracteres, e o número máximo de caracteres do valor da tag é 256.
Para obter informações sobre como especificar tags em uma instrução, consulte Cotas de tags para objetos e colunas.
Requisitos de controle de acesso¶
A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
---|---|---|
CREATE EVENT TABLE |
Esquema no qual você planeja criar a tabela de evento. |
O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.
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¶
Um esquema não pode conter tabelas de eventos, tabelas e/ou exibições com o mesmo nome. Ao criar uma tabela de eventos:
Se já existir uma tabela ou exibição com o mesmo nome no esquema, um erro é emitido e a tabela de eventos não é criada.
Se uma tabela de eventos com o mesmo nome já existir no esquema, um erro é emitido e a tabela de eventos não é criada, a menos que a palavra-chave opcional
OR REPLACE
esteja incluída no comando.
Importante
Usar
OR REPLACE
é o equivalente a usar DROP TABLE na tabela de eventos existente e depois criar uma nova tabela de eventos com o mesmo nome; no entanto, a tabela descartada não é permanentemente removida do sistema. Em vez disso, ela fica retida no Time Travel. Isto é importante notar porque as tabelas descartadas no Time Travel podem ser recuperadas, mas elas também contribuem para o armazenamento de dados de sua conta. Para obter mais informações, consulte Custos de armazenamento para Time Travel e Fail-safe.Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.
Isso significa que qualquer consulta concorrente com a operação CREATE OR REPLACE EVENT TABLE utiliza a versão da tabela antiga ou nova.
Recriar uma tabela (usando a palavra-chave opcional
OR REPLACE
) diminui seu histórico, o que torna qualquer fluxo na tabela obsoleto. Um fluxo obsoleto é ilegível.Em relação aos metadados:
Atenção
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.
CREATE EVENT TABLE … CLONE:
Se a tabela de evento de origem tiver chaves de clustering, a nova tabela de evento terá chaves de clustering. Por padrão, o Clustering automático é suspenso para a nova tabela de evento, mesmo que o Clustering automático não tenha sido suspenso para a tabela de origem.
Instruções CREATE OR REPLACE <object> são atômicas. Ou seja, quando um objeto é substituído, o objeto antigo é excluído e o novo objeto é criado em uma única transação.
Exemplos¶
Crie uma tabela de eventos chamada my_events
:
CREATE EVENT TABLE my_events;