À propos de la gestion des tables dynamiques

La gestion des tables dynamiques implique généralement les tâches suivantes :

Tâche

Description

Répertorier les tables dynamiques et afficher des informations sur une table dynamique

Énumération et vue des tables dynamiques.

Supprimer une table dynamique

Suppression des tables dynamiques.

Modifier l’entrepôt ou la latence cible pour une table dynamique

Modification des tables dynamiques.

Répertorier les tables dynamiques et afficher des informations sur une table dynamique

Pour dresser la liste des tables dynamiques d’une base de données et voir les informations relatives à ces tables dynamiques, vous pouvez utiliser les commandes Snowsight ou SQL :

Utiliser Snowsight pour afficher des tables dynamiques et voir des détails

Pour afficher les tables dynamiques d’un schéma et voir les informations relatives à une table dynamique :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data » Databases.

  3. Dans l’explorateur d’objets de base de données situé en regard du volet de navigation, sélectionnez un schéma de base de données.

  4. Dans la page des détails du schéma, sélectionnez l’onglet Dynamic Tables.

    Notez que vous pouvez également voir la liste des tables dynamiques dans l’explorateur d’objets de la base de données en développant Dynamic Tables.

  5. Pour voir les informations sur une table dynamique spécifique, sélectionnez la table dynamique dans l’explorateur d’objets de la base de données ou dans la liste des tables dynamiques de l’onglet Dynamic Tables.

    Les onglets de cette page fournissent certaines des mêmes informations que la page de détails de la table, y compris :

    • La définition de la table dynamique et les privilèges accordés pour travailler avec la table dynamique

    • Informations sur les colonnes de la table dynamique

    • Un aperçu de 100 lignes maximum des données de la table dynamique

    En outre, la page de détails de la table dynamique comprend des onglets que vous pouvez utiliser pour voir des informations sur la table dynamique :

Utiliser des commandes SQL pour afficher des tables dynamiques et voir les détails

  • Pour dresser la liste des tables dynamiques de la base de données actuelle (ou du compte, si aucune base de données n’est actuellement utilisée), utilisez la commande SHOW DYNAMIC TABLES.

    Par exemple, pour répertorier les tables dynamiques dont les noms commencent par product_ dans la base de données mydb et le schéma myschema, exécutez l’instruction SQL suivante :

    SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;
    
    Copy

    Pour la syntaxe complète de la commande, voir SHOW DYNAMIC TABLES.

  • Pour obtenir des informations sur les colonnes d’une table dynamique, utilisez la commande DESCRIBE DYNAMIC TABLE.

    Par exemple, pour dresser la liste des colonnes de la table dynamique nommée product :

    DESC DYNAMIC TABLE product;
    
    Copy

Les tableaux dynamiques sont également inclus dans les résultats de la Vue TABLES.

Supprimer une table dynamique

Pour supprimer une table dynamique, vous pouvez utiliser des commandes Snowsight ou SQL.

Snowsight:
  1. Dans Snowsight, ouvrez la page de détails de la table dynamique (instructions).

  2. Dans le menu More situé dans le coin supérieur droit de la page, sélectionnez Drop.

SQL:
  • Utilisez la commande DROP DYNAMIC TABLE.

    Par exemple, pour supprimer la table dynamique nommée product :

DROP DYNAMIC TABLE product;
Copy

Partage de données avec des tables dynamiques

Les tables dynamiques sont des objets partageables. Pour partager une table dynamique, les fournisseurs de partage de données accordent des privilèges sur une table dynamique à un partage, qui peut à son tour être utilisée par les consommateurs de partage de données.

Comment les données sont-elles partagées avec les tables dynamiques ?

Les fournisseurs peuvent partager des tables dynamiques sélectionnées avec d’autres comptes Snowflake en utilisant le partage direct ou les annonces, qui permettent de partager des données entre comptes sans les déplacer physiquement. Le processus consiste à créer un partage d’une base de données dans le compte du fournisseur, à accorder l’accès à la base de données dans le compte du fournisseur, à accorder des privilèges d’accès et à ajouter d’autres objets au partage. Pour en savoir plus, voir Présentation de Secure Data Sharing et Aperçu du partage de données sur Snowflake.

Un fournisseur de partage de données peut choisir d’accorder le privilège SELECT à une seule table dynamique ou d’accorder le privilège SELECT à toutes les tables dynamiques d’une base de données, comme le montrent les exemples suivants.

GRANT SELECT ON ALL DYNAMIC TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT SELECT ON DYNAMIC TABLE mydb.public TO SHARE share1;
Copy

Pour plus de détails, voir GRANT <privilège> … TO SHARE.

Créer une table dynamique pour ingérer des données partagées

Pour créer une table dynamique afin d’ingérer des données partagées, procédez comme suit :

  1. Assurez-vous que vous disposez des privilèges appropriés, créez une base de données à partir d’un partage et accordez-lui des privilèges.

    CREATE DATABASE shared_db FROM SHARE provider_account.share1;
    
    Copy
  2. Accordez les privilèges à la base de données partagée.

  3. Créez une table dynamique partagée.

    CREATE OR REPLACE DYNAMIC TABLE <dt_name>
      TARGET_LAG = '1 day'
      WAREHOUSE = <warehouse_name>
      AS
        SELECT * FROM shared_db.public.mydb;
    
    Copy

    Note

    Le suivi des modifications doit être activé pour tous les objets sous-jacents utilisés par une table dynamique. Pour utiliser une table dynamique afin d’ingérer des données partagées, le fournisseur de partage de données doit activer change_tracking sur l’objet partagé. Voir Activer le suivi des modifications.

Lorsque vous utilisez une table dynamique pour intégrer des données partagées, la requête ne peut pas effectuer de sélection à partir d’une table dynamique partagée ou d’une vue sécurisée partagée faisant référence à une table dynamique en amont.

Modifier l’entrepôt ou la latence cible pour une table dynamique

  • Pour modifier l’entrepôt ou la latence cible d’une table dynamique, utilisez la commande ALTER DYNAMIC TABLE.

    Par exemple, pour modifier l’entrepôt de la table dynamique product en my_other_wh, exécutez ceci :

    ALTER DYNAMIC TABLE product SET
      WAREHOUSE = my_other_wh;
    
    Copy

Pour connaître la syntaxe complète de la commande ALTER DYNAMIC TABLE, voir ALTER DYNAMIC TABLE.

Déterminer la latence cible optimale pour une table dynamique

Pour déterminer le temps de latence cible optimal pour une table dynamique, vous pouvez utiliser les commandes Snowsight ou SQL.

Snowsight:
  1. Sur la page de détails de la table dynamique, cliquez sur l’onglet Refresh History.

  2. Vérifiez le temps de latence réel maximum, qui est affiché en haut de l’onglet. Cette mesure est basée sur le temps de latence réel pour chaque actualisation.

SQL:
  • Utilisez la fonction de la table DYNAMIC_TABLE_REFRESH_HISTORY dans INFORMATION_SCHEMA. Cette fonction renvoie des informations sur chaque actualisation d’une table dynamique, y compris la durée de l’actualisation et les actualisations qui ont été ignorées.

Le temps de latence que vous choisissez peut affecter le calendrier d’actualisation déterminé par le processus d’actualisation automatisé. Le processus d’actualisation automatisé choisit un calendrier qui respecte au mieux les temps de latence des tables dynamiques.

Déterminer si une actualisation incrémentielle ou complète est utilisée

Pour déterminer si une actualisation incrémentielle ou complète est utilisée pour mettre à jour une table dynamique, vous pouvez utiliser des commandes Snowsight ou SQL.

Snowsight:
  • Allez à la page de détails de la table dynamique.

    Les détails de base en haut de la page indiquent si des actualisations incrémentielles ou complètes sont utilisées pour cette table.

SQL:
  • Utilisez la commande SHOW DYNAMIC TABLES et vérifiez la valeur de la colonne REFRESH_MODE dans la sortie.

    Si REFRESH_MODE = FULL, REFRESH_MODE_REASON comprend des détails supplémentaires sur la raison pour laquelle une actualisation complète a été exécutée.