CREATE DYNAMIC TABLE

Crée une table dynamique, sur la base d’une requête spécifiée.

Voir aussi :

ALTER DYNAMIC TABLE, DESCRIBE DYNAMIC TABLE, DROP DYNAMIC TABLE , SHOW DYNAMIC TABLES

Dans ce chapitre :

Syntaxe

CREATE [ OR REPLACE ] DYNAMIC TABLE <name>
  TARGET_LAG = { '<num> { seconds | minutes | hours | days }' | DOWNSTREAM }
  WAREHOUSE = <warehouse_name>
  AS <query>
  [ COMMENT = '<string_literal>' ]
Copy

Paramètres requis

name

Indique l’identificateur (c’est-à-dire le nom) de la table dynamique ; doit être unique pour le schéma dans lequel la table dynamique 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.

TARGET_LAG = { num { seconds | minutes | hours | days } | DOWNSTREAM }

Spécifie le décalage de la table dynamique :

'num seconds | minutes | hours | days'

Spécifie le délai maximum pendant lequel le contenu de la table dynamique doit être décalé par rapport aux mises à jour des tables de base.

Par exemple :

  • Si les données de la table dynamique ne doivent pas être décalées de plus de 5 minutes, indiquez 5 minutes.

  • Si les données de la table dynamique ne doivent pas être décalées de plus de 5 heures, indiquez 5 hours.

La valeur minimale est de 1 minute. Si la table dynamique A dépend d’une autre table dynamique B, le décalage minimum pour A doit être supérieur ou égal au décalage pour B.

DOWNSTREAM

Spécifie que la table dynamique ne doit être actualisé que lorsque les tables dynamiques qui en dépendent sont actualisés.

WAREHOUSE = warehouse_name

Spécifie le nom de l’entrepôt qui fournit les ressources de calcul pour l’actualisation de la table dynamique.

Vous devez disposer du privilège USAGE sur cet entrepôt pour pouvoir créer la table dynamique.

AS query

Spécifie la requête dont les résultats doivent être contenus dans la table dynamique.

Paramètres facultatifs

COMMENT = 'string_literal'

Spécifie un commentaire pour la table dynamique.

Par défaut : aucune valeur.

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :

Privilège

Objet

Remarques

CREATE DYNAMIC TABLE

Schéma dans lequel vous prévoyez de créer la table dynamique.

SELECT

Tables, vues et tables dynamiques que vous prévoyez d’interroger pour la nouvelle table dynamique.

USAGE

Entrepôt que vous prévoyez d’utiliser pour actualiser la table.

Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

Lorsque vous exécutez la commande CREATE DYNAMIC TABLE, le rôle en cours d’utilisation devient propriétaire de la table dynamique. Ce rôle est utilisé pour effectuer des actualisations de la table dynamique en arrière-plan.

Les tables dynamiques sont mises à jour lorsque les objets de la base de données sous-jacente changent. Le suivi des modifications doit être activé pour tous les objets sous-jacents utilisés par une table dynamique. Voir Tables dynamiques et suivi des modifications.

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.

Exemples

Créez une table dynamique nommée product :

CREATE OR REPLACE DYNAMIC TABLE product
 TARGET_LAG = '20 minutes'
  WAREHOUSE = mywh
  AS
    SELECT product_id, product_name FROM staging_table;
Copy

Dans cet exemple :

  • La table dynamique matérialise les résultats d’une requête sur les colonnes product_id et product_name de la table staging_table.

  • Le temps de latence cible est de 20 minutes, ce qui signifie que les données de la table dynamique ne devraient idéalement pas être antérieures de plus de 20 minutes à celles de la staging_table.

  • Le processus d’actualisation automatisé utilise les ressources informatiques de l’entrepôt mywh pour actualiser les données de la table dynamique.