Aperçu de la table d’événements¶
Lorsque vos objets Snowflake, y compris les procédures et UDFs, émettent des données de télémétrie, Snowflake collecte les données dans une table d’événements dont les données sont disponibles pour des requêtes. Snowflake inclut une table d’événements par défaut, mais vous pouvez également en créer une nouvelle.
Pour collecter des données de télémétrie, vous devez avoir une table d’événements active et avoir défini des niveaux de télémétrie pour permettre la collecte de données. Si vous ne disposez pas encore d’une table d’événements active, Snowflake fait de la table d’événements par défaut la table d’événements active.
Lors de la collecte de données de télémétrie, vous encourez des coûts. Pour comprendre ces coûts, ou pour les réduire ou les éviter, voir Coûts de la collecte de données de télémétrie.
Qu’est-ce qu’une table d’événements ?¶
Un tableau des événements est un type spécial de table de base de données avec un ensemble prédéfini de colonnes. La structure de la table prend en charge le modèle de données pour OpenTelemetry, un framework de gestion des données de télémétrie. Lorsqu’une table d’événements est active, Snowflake collecte des données de télémétrie dans la table, y compris des données que Snowflake génère lui-même et des données que vous émettez en instrumentant votre code du gestionnaire à l’aide de certaines APIs. Vous pouvez visualiser les données collectées en exécutant des requêtes SQL.
Après l’installation, Snowflake inclut une table d’événements par défaut appelée SNOWFLAKE.TELEMETRY.EVENTS. Cette table d’événements est active et collecte des données jusqu’à ce que vous la désactiviez. Vous pouvez également créer la vôtre.
Utiliser la table d’événements par défaut¶
Si vous n’avez pas défini de table d’événements active, Snowflake utilise comme table d’événements active une table d’événements par défaut nommée SNOWFLAKE.TELEMETRY.EVENTS. Vous pouvez également créer vos propres tables d’événements pour des usages spécifiques.
Par défaut, Snowflake inclut également une vue prédéfinie appelée SNOWFLAKE.TELEMETRY.EVENTS_VIEW view, avec laquelle vous rendez les données de la table d’événements accessibles à un éventail d’utilisateurs de manière plus sécurisée. Vous pouvez gérer l’accès à la vue avec une politique d’accès aux lignes.
Note
La table d’événements par défaut ne prend en charge qu’un sous-ensemble de commandes DDL prises en charge pour les tables d’événements que vous créez ou pour les tables standard. Pour plus d’informations, voir Utilisation des tables d’événements.
Rôles pour l’accès à la table d’événements par défaut et EVENTS_VIEW¶
Snowflake inclut les rôles d’application prédéfinis suivants que vous pouvez utiliser pour gérer l’accès à la table d’événements par défaut et à la vue EVENTS_VIEW : Une personne ayant le rôle ACCOUNTADMIN peut accéder à la table d’événements par défaut et à la vue EVENTS_VIEW et peut accorder les rôles décrits ici à d’autres rôles pour qu’ils y accèdent.
Vous devez accorder ces rôles à d’autres rôles, plutôt qu’à un utilisateur. Par exemple, vous pouvez attribuer le rôle EVENTS_ADMIN à un autre rôle d’administrateur que vous avez créé pour une utilisation administrative plus large.
GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_ADMIN TO ROLE my_admin_role
GRANT APPLICATION ROLE SNOWFLAKE.EVENTS_VIEWER TO ROLE my_analysis_role
- EVENTS_VIEWER:
Rôle avec privilèges pour exécuter une instruction SELECT sur la vue EVENTS_VIEW.
- EVENTS_ADMIN:
Rôle avec les privilèges suivants :
SELECT, TRUNCATE, DELETE sur la table d’événements par défaut.
SELECT sur la vue EVENTS_VIEW de la table des événements par défaut.
USAGE sur les procédures stockées suivantes :
Ce rôle dispose également de privilèges pour exécuter une procédure stockée afin d’appliquer une politique d’accès aux lignes (RAP) sur la vue EVENTS_VIEW dont les données sont basées sur la table d’événements par défaut.
Gérer l’accès à la vue EVENTS_VIEW¶
Vous pouvez gérer l’accès aux données dans la vue EVENTS_VIEW avec des politiques d’accès aux lignes. Snowflake fournit des procédures stockées que vous pouvez utiliser pour ajouter et supprimer une politique d’accès à la vue EVENT_VIEW.
ADD_ROW_ACCESS_POLICY_ON_EVENTS_VIEW(VARCHAR, ARRAY)— Lie une politique d’accès aux lignes aux colonnes spécifiées dans la EVENTS_VIEW.
DROP_ROW_ACCESS_POLICY_ON_EVENTS_VIEW(VARCHAR)—Supprime la politique d’accès aux lignes spécifiée liée à la EVENTS_VIEW.
Note
Vous devez avoir le rôle EVENTS_ADMIN pour exécuter ces procédures.
L’utilisation des politiques d’accès aux lignes sur la vue EVENT_VIEW est une fonctionnalité Enterprise Edition.
Utiliser une table d’événements personnalisée¶
Pour créer une nouvelle table d’événements, exécutez la commande CREATE EVENT TABLE et spécifiez un nom pour la table d’événements.
Note
Si vous ne créez pas de table d’événements, Snowflake utilise la table d’événements par défaut pour collecter les données de télémétrie.
Créez une table d’événements en exécutant la commande CREATE EVENT TABLE, en spécifiant un nom pour la table d’événements.
Associez la table d’événements à un objet en exécutant la commande ALTER <objet> sur l’objet, en définissant le paramètre EVENT_TABLE sur le nom de votre table d’événements.
Cela permet de définir le champ d’application des données capturées par la table d’événements sur l’objet auquel vous associez la table.
Créer une table d’événements¶
Pour créer une table d’événements, exécutez la commande CREATE EVENT TABLE.
Lorsque vous créez une table d’événements, vous ne spécifiez pas les colonnes de la table. Une table d’événements possède déjà un ensemble de colonnes prédéfinies, comme décrit dans Colonnes de table d’événements.
Assurez-vous que vous utilisez un rôle qui dispose du privilège CREATE EVENT TABLE <label-security_access_control_privileges_schema_privileges>.
Exécutez la commande CREATE EVENT TABLE pour créer la table d’événements, en spécifiant un nom pour la table d’événements.
Vous utilisez le nom de la table d’événements pour associer la table à un objet, tel qu’une base de données.
Par exemple, pour créer une table d’événements portant le nom
my_events
, exécutez l’instruction suivante :CREATE EVENT TABLE my_database.my_schema.my_events;
Note
La réplication des tables d’événements n’est pas prise en charge actuellement. Toutes les tables d’événements contenues dans les bases de données principales sont ignorées lors de la réplication.
Associer une table d’événements à un objet¶
Pour spécifier l’objet pour lequel une table d’événements est active, exécutez la commande ALTER <objet> sur l’objet.
L’association d’une table d’événements à une base de données est une fonctionnalité Enterprise Edition.
Assurez-vous que vous utilisez un rôle qui dispose des privilèges requis.
Exécutez la commande ALTER <objet> sur l’objet, en définissant le paramètre EVENT_TABLE sur le nom de votre table d’événements.
L’activation de ce paramètre définit l’objet comme le champ d’application dans lequel les événements seront collectés dans la table d’événements spécifiée.
Par exemple, pour associer la table d’événements à une base de données, utilisez ALTER DATABASE, comme dans l’exemple suivant :
ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
Dans cet exemple, Snowflake, en fonction de la façon dont vous avez spécifié les niveaux de télémétrie, capture les données de télémétrie pour les procédures et les UDFs dans
my_database
dans la table d’événementstelemetry_database.telemetry_schema.my_events
.
Objets pris en charge¶
La table suivante répertorie les objets auxquels vous pouvez associer un événement, ainsi que les privilèges requis pour effectuer l’association.
Objet |
Privilèges requis |
Champ d’application des objets dont les données sont collectées |
---|---|---|
Compte |
|
Procédures et UDFs dans le compte. Utilisez ceci pour le champ d’application le plus large. |
Base de données |
|
Procédures et UDFs dans la base de données spécifiée. |
Un ordre de priorité détermine quelle table d’événements est utilisée pour collecter les données de télémétrie d’un objet. Dans cet ordre de priorité, une table d’événements associée à une base de données a la priorité sur une table d’événements associée à un compte.
Base de données » du compte
En d’autres termes, si des tables d’événements sont associées à votre compte et à une base de données my_database
, les données de télémétrie générées par les objets de my_database
seront collectées dans la table d’événements de la base de données. Pour les autres bases de données du compte qui n’ont pas de table d’événements associée, les données de télémétrie seront collectées dans la table d’événements associée au compte.
Définir la table d’événements pour le compte¶
Note
Pour exécuter cette commande, vous devez utiliser le rôle ACCOUNTADMIN.
En outre, vous devez avoir les deux des privilèges suivants :
privilège OWNERSHIP pour le compte.
Voir la documentation sur la commande ALTER ACCOUNT pour plus d’informations sur les privilèges nécessaires à l’exécution de ALTER ACCOUNT.
Par exemple, pour définir la table d’événements nommée my_events
dans le schéma my_schema
de la base de données my_database
comme table d’événements active pour votre compte, exécutez l’instruction suivante :
ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
Comme indiqué ci-dessus, vous devez spécifier le nom pleinement qualifié de la table d’événements.
Pour dissocier une table d’événements d’un compte, exécutez la commande ALTER ACCOUNT et désactivez le paramètre EVENT_TABLE. Par exemple :
ALTER ACCOUNT UNSET EVENT_TABLE;
Vous pouvez confirmer la valeur EVENT_TABLE avec la commande SHOW PARAMETERS :
SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
Définir la table d’événements pour une base de données¶
Pour configurer la table d’événements nommée my_events
dans le schéma my_schema
de la base de données my_database
en tant que table d’événements active pour la base de données my_database
, exécutez l’instruction suivante :
ALTER DATABASE my_database SET EVENT_TABLE = my_database.my_schema.my_events;
Pour dissocier une table d’événements d’une base de données, exécutez la commande ALTER DATABASE et désactivez le paramètre EVENT_TABLE. Par exemple :
ALTER DATABASE my_database UNSET EVENT_TABLE;
Vous pouvez confirmer la valeur EVENT_TABLE avec la commande SHOW PARAMETERS :
SHOW PARAMETERS LIKE 'event_table' IN DATABASE my_database;