Visão geral da tabela de evento

À medida que seus objetos do Snowflake — incluindo procedimentos e UDFs — emitem dados de telemetria, o Snowflake coleta os dados em uma tabela de eventos cujos dados estão disponíveis para consultas. O Snowflake inclui uma tabela de evento por padrão, mas você também pode criar uma nova.

Para coletar dados de telemetria, é necessário ter uma tabela de evento ativa e definir níveis de telemetria para permitir a coleta de dados. Se você ainda não tiver uma tabela de evento ativa, o Snowflake tornará a tabela de evento padrão a tabela de evento ativa.

Ao coletar dados de telemetria, você incorre em custos. Para entender esses custos, ou para reduzir ou evitar esses custos, consulte Custos da coleta de dados de telemetria.

O que é uma tabela de evento?

Uma tabela de evento é um tipo especial de tabela do banco de dados com um conjunto predefinido de colunas. A estrutura da tabela oferece suporte ao modelo de dados para OpenTelemetry, uma estrutura para manipulação de dados de telemetria. Quando uma tabela de eventos está ativa, o Snowflake coleta dados de telemetria na tabela, incluindo dados que o próprio Snowflake gera e dados que você emite ao instrumentar o código do manipulador usando determinadas APIs. É possível exibir os dados coletados executando consultas SQL.

Após a instalação, o Snowflake inclui uma tabela de evento padrão chamada SNOWFLAKE.TELEMETRY.EVENTS. Esta tabela de evento fica ativa e coleta dados até que você a desative. Também é possível criar a sua própria.

Usar a tabela de eventos padrão

Se você não definir uma tabela de eventos ativa, o Snowflake usará como tabela de eventos ativa uma tabela de eventos padrão denominada SNOWFLAKE.TELEMETRY.EVENTS. Você também pode criar suas próprias tabelas de eventos para usos específicos.

Por padrão, o Snowflake também inclui uma exibição predefinida chamada SNOWFLAKE.TELEMETRY.EVENTS_VIEW, com a qual você disponibiliza com mais segurança os dados da tabela de evento para uma variedade de usuários. É possível gerenciar o acesso para a exibição com uma política de acesso a linhas.

Nota

A tabela de evento padrão oferece suporte a apenas um subconjunto de comandos DDL compatíveis com tabelas de evento que você cria ou tabelas regulares. Para obter mais informações, consulte Como trabalhar com tabelas de eventos.

Funções para acesso à tabela de evento padrão e EVENTS_VIEW

O Snowflake inclui as seguintes funções de aplicativo predefinidas que você pode usar para gerenciar o acesso à tabela de eventos padrão e à exibição EVENTS_VIEW: uma pessoa com a função ACCOUNTADMIN pode acessar a tabela de eventos padrão e a exibição EVENTS_VIEW e pode conceder as funções descritas aqui a outras funções para acesso a elas.

Você deve conceder essas funções a outras funções, e não a um usuário. Por exemplo, você pode conceder a função EVENTS_ADMIN a outra função de administrador que tenha criado para uso administrativo mais amplo.

GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_ADMIN TO ROLE my_admin_role

GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_analysis_role
Copy
EVENTS_VIEWER:

Função com privilégios para executar uma instrução SELECT na exibição EVENTS_VIEW.

EVENTS_ADMIN:

Função com os seguintes privilégios:

Gerenciar o acesso à exibição EVENTS_VIEW

É possível gerenciar o acesso aos dados na exibição EVENTS_VIEW com políticas de acesso a linhas. O Snowflake fornece procedimentos armazenados que você pode usar para adicionar e remover uma política de acesso a linhas à exibição EVENT_VIEW.

Nota

É necessário ter a função EVENTS_ADMIN para executar esses procedimentos.

Usar políticas de acesso a linhas na exibição EVENT_VIEW é um recurso Enterprise Edition.

Usar uma tabela de eventos personalizada

Para criar uma nova tabela de evento, execute o comando CREATE EVENT TABLE e especifique um nome para a tabela de evento.

Nota

Se você não criar uma tabela de eventos, o Snowflake usará a tabela de eventos padrão para coletar dados de telemetria.

  1. Crie uma tabela de eventos executando o comando CREATE EVENT TABLE, especificando um nome para a tabela de eventos.

  2. Associe a tabela de eventos a um objeto executando o comando ALTER <objeto> no objeto, definindo o parâmetro EVENT_TABLE como o nome da tabela de eventos.

    Isso define o escopo dos dados capturados pela tabela de eventos para o objeto ao qual você está associando a tabela.

Criação de uma tabela de eventos

Para criar uma tabela de eventos, execute o comando CREATE EVENT TABLE.

Ao criar uma tabela de eventos, você não especifica as colunas da tabela. Uma tabela de eventos já tem um conjunto de colunas predefinidas, conforme descrito em Colunas da tabela de eventos.

  1. Certifique-se de que você esteja usando uma função que tenha o privilégio CREATE EVENT TABLE.

  2. Execute o comando CREATE EVENT TABLE para criar a tabela de eventos, especificando um nome para a tabela de eventos.

    Você usa o nome da tabela de eventos para associar a tabela a um objeto, como um banco de dados.

    Por exemplo, para criar uma tabela de eventos com o nome my_events, execute a seguinte instrução:

    CREATE EVENT TABLE my_database.my_schema.my_events;
    
    Copy

Nota

No momento, não há suporte para a replicação de tabelas de eventos. Todas as tabelas de evento contidas nos bancos de dados primários são ignoradas durante a replicação.

Associar uma tabela de eventos a um objeto

Para especificar o objeto para o qual uma tabela de eventos está ativa, execute o comando ALTER <objeto> no objeto.

A associação de uma tabela de eventos a um banco de dados é um recurso do Enterprise Edition.

  1. Certifique-se de que você esteja usando uma função que tenha os privilégios necessários.

  2. Execute o comando ALTER <objeto> no objeto, definindo o parâmetro EVENT_TABLE para o nome de sua tabela de eventos.

    A definição desse parâmetro define o objeto como o escopo dentro do qual os eventos serão coletados na tabela de eventos especificada.

    Por exemplo, para associar a tabela de eventos a um banco de dados, use ALTER DATABASE, como no exemplo a seguir:

    ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
    
    Copy

    Neste exemplo, o Snowflake, dependendo de como você especificou os níveis de telemetria, captura dados de telemetria para procedimentos e UDFs em my_database na tabela de eventos telemetry_database.telemetry_schema.my_events.

Objetos com suporte

A tabela a seguir lista os objetos aos quais você pode associar um evento, juntamente com os privilégios necessários para fazer a associação.

Objeto

Privilégios necessários

Escopo dos objetos cujos dados são coletados

Conta

Procedimentos e UDFs na conta. Use isso para o escopo mais amplo.

Banco de dados

Procedimentos e UDFs no banco de dados especificado.

Uma ordem de precedência determina qual tabela de eventos é usada para coletar dados de telemetria de um objeto. Nessa ordem de precedência, uma tabela de eventos associada a um banco de dados tem precedência sobre uma tabela de eventos associada a uma conta.

  • Banco de dados » conta

Em outras palavras, se você tiver tabelas de eventos associadas à sua conta e a um banco de dados my_database, os dados de telemetria gerados por objetos em my_database serão coletados na tabela de eventos do banco de dados. Para outros bancos de dados da conta que não tenham uma tabela de eventos associada, os dados de telemetria serão coletados na tabela de eventos associada à conta.

Definir a tabela de eventos para a conta

Nota

Para executar esse comando, você deve usar a função ACCOUNTADMIN.

Além disso, você deve ter os dois privilégios a seguir:

Consulte a documentação sobre o comando ALTER ACCOUNT para obter mais informações sobre os privilégios necessários para executar ALTER ACCOUNT.

Por exemplo, para configurar a tabela de eventos denominada my_events no esquema my_schema no banco de dados my_database como a tabela de eventos ativa de sua conta, execute a seguinte instrução:

ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

Como mostrado acima, você deve especificar o nome totalmente qualificado da tabela de eventos.

Para desassociar uma tabela de eventos de uma conta, execute o comando ALTER ACCOUNT e desmarque o parâmetro EVENT_TABLE. Por exemplo:

ALTER ACCOUNT UNSET EVENT_TABLE;
Copy

Você pode confirmar o valor EVENT_TABLE com o comando SHOW PARAMETERS:

SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
Copy

Definir a tabela de eventos para um banco de dados

Para configurar a tabela de eventos chamada my_events no esquema my_schema no banco de dados my_database como a tabela de eventos ativa para o banco de dados my_database, execute a seguinte instrução:

ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

Para desassociar uma tabela de eventos de um banco de dados, execute o comando ALTER DATABASE e desmarque o parâmetro EVENT_TABLE. Por exemplo:

ALTER DATABASE my_database UNSET EVENT_TABLE;
Copy

Você pode confirmar o valor EVENT_TABLE com o comando SHOW PARAMETERS:

SHOW PARAMETERS LIKE 'event_table' IN DATABASE my_database;
Copy