CREATE EVENT TABLE

Crée une table d’événements qui capture les événements, y compris les messages enregistrés par les fonctions et les procédures.

Voir aussi :

ALTER TABLE (tables des événements) , DESCRIBE EVENT TABLE, DROP TABLE, SHOW EVENT TABLES

Syntaxe

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>' , ... ] ) ]
Copy

Paramètres requis

name

Indique l’identificateur (c’est-à-dire le nom) de la table d’événements ; doit être unique pour le schéma dans lequel la table d’événements est créée.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Paramètres facultatifs

CLUSTER BY ( expr [ , expr , ... ] )

Spécifie une ou plusieurs colonnes ou expressions de colonne dans la table comme clés de clustering. Pour plus de détails, voir Clés de clustering et tables en cluster.

Par défaut : aucune valeur (aucune clé de clustering n’est définie pour la table)

Important

Les clés de clustering ne sont pas recommandées ni conçues pour toutes les tables. Elles sont généralement intéressantes pour les tables très importantes (de plusieurs téraoctets).

Avant de spécifier une clé de clustering pour une table, consultez Fonctionnement des structures de table dans Snowflake.

DATA_RETENTION_TIME_IN_DAYS = integer

Spécifie la période de conservation de la table pour que les actions Time Travel (SELECT, CLONE, UNDROP) puissent être effectuées sur les données historiques de la table. Pour plus de détails, voir Comprendre et utiliser la fonction « Time Travel ».

Pour une description détaillée de ce paramètre de niveau objet, ainsi que plus d’informations sur les paramètres d’objet, voir Paramètres.

Valeurs :

  • Édition Standard : 0 ou 1

  • Édition Enterprise :

    • 0 à 90 pour les tables permanentes

Par défaut :

  • Édition Standard : 1

  • Édition Enterprise (ou supérieure) : 1 (sauf si une valeur par défaut différente a été spécifiée au niveau du compte, du schéma ou de la base de données)

Note

Une valeur de 0 désactive effectivement Time Travel pour la table.

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Paramètre d’objet qui spécifie le nombre maximum de jours pendant lesquels Snowflake peut prolonger la période de conservation des données de la table, afin d’éviter que les flux sur la table ne deviennent obsolètes.

Pour une description détaillée de ce paramètre, voir MAX_DATA_EXTENSION_TIME_IN_DAYS.

CHANGE_TRACKING = TRUE | FALSE

Spécifie s’il faut activer le suivi des modifications sur la table.

  • TRUE active le suivi des modifications sur la table. Ce paramètre ajoute une paire de colonnes masquées à la table source et commence à stocker les métadonnées de suivi des modifications dans les colonnes. Ces colonnes consomment une petite quantité de stockage.

    Les métadonnées de suivi des modifications peuvent être interrogées à l’aide de la clause CHANGES pour les instructions SELECT, ou en créant et en interrogeant un ou plusieurs flux sur la table.

  • FALSE n’active pas le suivi des modifications sur la table.

Par défaut : FALSE

DEFAULT_DDL_COLLATION = 'collation_specification'

Spécifie une spécification de collation par défaut pour les colonnes de la table.

Pour plus de détails sur le paramètre, voir DEFAULT_DDL_COLLATION.

COPY GRANTS

Spécifie de conserver les privilèges d’accès de la table d’origine lorsqu’une nouvelle table est créée à l’aide de CREATE OR REPLACE EVENT TABLE.

Ce paramètre copie tous les privilèges, excepté OWNERSHIP, de la table existante vers la nouvelle table. La nouvelle table n’hérite pas des attributions futures définies pour le type d’objet dans le schéma. Par défaut, le rôle qui exécute l’instruction CREATE EVENTTABLE possède la nouvelle table.

Si le paramètre n’est pas inclus dans l’instruction CREATE EVENT TABLE, la nouvelle table n’hérite pas des privilèges d’accès explicites accordés sur la table d’origine, mais des attributions futures définies pour le type d’objet dans le schéma.

Remarque :

  • Avec le partage des données :

    • Si la table existante a été partagée avec un autre compte, la table de remplacement est également partagée.

    • Si la table existante a été partagée avec votre compte en tant que consommateur de données et que l’accès a été accordé à d’autres rôles dans le compte (en utilisant GRANT IMPORTED PRIVILEGES sur la base de données mère), l’accès est également accordé à la table de remplacement.

  • La sortie SHOW GRANTS pour la table de remplacement liste le concessionnaire des privilèges copiés comme le rôle qui a exécuté l’instruction CREATE EVENT TABLE avec l’horodatage courant lorsque l’instruction a été exécutée.

  • L’opération de copie des accords s’effectue atomiquement dans la commande CREATE EVENT TABLE (c’est-à-dire dans la même transaction).

ROW ACCESS POLICY policy_name ON ( col_name [ , col_name ... ] )

Spécifie la politique d’accès aux lignes à définir sur une table.

COMMENT = 'string_literal'

Spécifie un commentaire pour la table.

Par défaut : aucune valeur

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

Notes sur l’utilisation

  • Un schéma ne peut pas contenir de tables d’événements, de tables, et/ou de vues portant le même nom. Lors de la création d’une table d’événements :

    • Si une table ou une vue portant le même nom existe déjà dans le schéma, une erreur est renvoyée et la table d’événements n’est pas créée.

    • Si une table d’événements portant le même nom existe déjà dans le schéma, une erreur est renvoyée et la table d’événements n’est pas créée, sauf si le mot clé facultatif OR REPLACE est inclus dans la commande.

    Important

    Utiliser OR REPLACE équivaut à utiliser DROP TABLE sur la table d’événements existante et créer ensuite une nouvelle table d’événements avec le même nom ; cependant, la table détruite n’est pas définitivement supprimée du système. En revanche, il est conservé dans Time Travel. Cela est important, car si les tables détruites dans Time Travel peuvent être récupérées, elles contribuent aussi au stockage des données pour votre compte. Pour plus d’informations, voir Coûts de stockage pour Time Travel et Fail-safe.

    Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

    Cela signifie que toutes les requêtes simultanées à l’opération CREATE OR REPLACE EVENT TABLE utilisent soit l’ancienne soit la nouvelle version de la table.

  • La recréation d’une table (en utilisant le mot clé OR REPLACE facultatif) détruit son historique, ce qui rend tout flux sur la table périmé. Un flux périmé est illisible.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

  • Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.

Exemples

Créer une table d’événements nommée my_events :

CREATE EVENT TABLE my_events;
Copy