Ce chapitre décrit les tâches associées à la création de bases de données à partir de partages mis à disposition par les fournisseurs de données, puis à l’utilisation des bases de données pour les requêtes et autres opérations.
Les tâches décrites dans ce chapitre ne s’appliquent pas aux comptes de lecteur. Si vous utilisez un compte de lecteur pour consommer des données importées, vous ne devez effectuer aucune de ces tâches car elles ont déjà été accomplies par un administrateur du compte fournisseur.
Dans ce chapitre :
Limitations générales concernant les bases de données importées¶
Les bases de données importées présentent les limitations suivantes pour les consommateurs :
Les bases de données importées sont en lecture seule. Les utilisateurs d’un compte consommateur peuvent consulter/interroger des données, mais ne peuvent pas insérer ou mettre à jour des données, ni créer d’objets dans la base de données.
Les actions suivantes ne sont pas prises en charge :
Créer le clone d’une base de données importée ou de n’importe quel schéma/table de la base de données
Time Travel pour une base de données importée ou pour tout schéma/table de la base de données.
Modifier les commentaires d’une base de données importée
Les bases de données importées et tous les objets qu’elles contiennent ne peuvent pas être partagés à nouveau avec (importés par) d’autres comptes.
Les bases de données importées ne peuvent pas être répliquées.
Vous pouvez visualiser les partages qui sont disponibles à la consommation dans votre compte en utilisant l’interface Web ou SQL :
Snowsight:
Sélectionnez Data Products » Private Sharing, puis sélectionnez Shared With You. Vous pouvez voir les éléments suivants :
Les annonces partagées en privé qui ont été partagées avec vous. Vous pouvez également voir des annonces Data Exchange auxquelles vous avez accès.
Partages directs qui ont été partagés avec vous. Selon le statut du partage, les partages sont regroupés en deux sections :
Les partages directs qui sont prêts à recevoir (c’est-à-dire qu’une base de données n’a pas été créée à partir du partage).
Les partages directs qui ont été importés dans une base de données et qui sont prêts à être interrogés.
Pour voir les annonces Snowflake Marketplace qui ont été importées dans une base de données et qui sont prêtes à faire l’objet d’une requête, dans le menu de navigation, sélectionnez Data Products » Marketplace. Pour plus d’informations, voir Découverte des annonces.
Classic Console:
Sélectionnez Shares, puis sélectionnez la bascule Inbound.
La page affiche tous les partages disponibles sur votre compte. La colonne Database affiche le nom de la base de données créée à partir du partage. Si la colonne est vide, une base de données n’a pas encore été créée (dans votre compte) à partir du partage.
Deux partages, sales_s et sales_s2 sont disponibles. INBOUND dans la colonne kind indique qu’un fournisseur de données a mis le partage à la disposition de votre compte en vue d’une consommation.
La colonne name affiche le nom de chaque partage, sous la forme share_name (par exemple, SALE_S).
La colonne owner_account affiche le nom du compte qui a fourni chaque partage, sous la forme orgname.account_name.
Si la colonne database_name est vide, une base de données n’a pas encore été créée depuis le partage dans votre compte.
Le partage est constitué d’un schéma, aggregates_eula, avec une table, aggregate_1. Chaque nom d’objet, y compris la base de données elle-même, est doté du préfixe <DB>. Ceci indique qu’une base de données n’a pas encore été créée (dans votre compte) à partir du partage.
Création d’une base de données à partir d’un partage¶
Vous pouvez créer une base de données à partir d’un partage en utilisant l’interface Web ou SQL :
Où provider_account est le nom du compte qui a fourni le partage et share_name est le nom du partage à partir duquel créer la base de données.
Note
Un partage ne peut être consommé qu’une seule fois par compte.
Pour voir les objets qui sont importés avant de créer une base de données, utilisez la commande DESCRIBE SHARE.
Lorsqu’une base de données est créée à partir d’un partage, seul le rôle utilisé pour créer la base de données peut accéder aux objets de la base de données par défaut. Pour obtenir des instructions sur l’octroi d’un accès à d’autres rôles, reportez-vous à Accorder des privilèges sur une base de données importée (dans cette rubrique).
Accorder des privilèges sur une base de données importée¶
Les instructions pour accorder l’accès aux objets d’un partage diffèrent selon que le fournisseur a segmenté les objets d’un partage en utilisant des rôles de base de données. Cette option associe différents objets du partage à différents rôles de base de données.
Notez qu’un seul partage peut inclure à la fois des objets accessibles via des rôles de base de données et des objets qui ne sont pas associés à un rôle de base de données.
Option 1 : Objets dans un partage non associés à un rôle de base de données¶
Autorisez les utilisateurs à accéder aux objets d’un partage en accordant le privilège IMPORTED PRIVILEGES sur une base de données importée à un ou plusieurs rôles de votre compte.
Un rôle peut accorder IMPORTED PRIVILEGES sur une base de données importée dans les cas suivants :
Possède la base de données importée (c’est-à-dire a le privilège OWNERSHIP sur la base de données).
A obtenu le privilège global MANAGE GRANTS.
Affectation de IMPORTED PRIVILEGES à d’autres rôles¶
Vous pouvez affecter ce rôle à d’autres rôles à l’aide de l’interface Web ou de SQL :
Classic Console:
Cliquez sur Databases » <nom_bd_partagée>.
Dans le panneau latéral, cliquez sur Grant Privileges et attribuez le privilège à un ou plusieurs rôles.
Étant donné que r2 n’a pas le privilège OWNERSHIP sur la base de données, pour pouvoir effectuer l’une des opérations d’octroi ou de révocation suivantes, le rôle r2 doit détenir le privilège MANAGE GRANTS sur le compte :
Option 2 : Objets dans un partage associé à un rôle de base de données¶
Autorisez les utilisateurs à accéder aux objets d’un partage en accordant le rôle de base de données approprié dans la base de données importée à un ou plusieurs rôles de votre compte.
Étape 1 : Créer une base de données à partir du partage¶
L’exécution de cette commande nécessite un rôle avec les privilèges globaux CREATE DATABASE et IMPORT SHARE.
Par exemple, créez des bases de données c1 à partir du fournisseur provider1 et du partage share1 :
CREATEDATABASEc1FROMSHAREprovider1.share1;
Copy
Étape 2 : Accorder des rôles de base de données à vos responsables de comptes¶
Accordez des rôles de base de données aux rôles de votre compte pour permettre aux utilisateurs disposant de ces rôles d’accéder aux objets de base de données dans le partage.
Utilisez le rôle que vous avez utilisé pour créer la base de données à partir du partage.
Par exemple, consultez les rôles de base de données disponibles, puis accordez le rôle de base de données c1.r1 au rôle analyst de votre compte :
SHOW DATABASE ROLESinDATABASEc1;GRANTDATABASE ROLEc1.r1TOROLEanalyst;
Copy
Création de flux sur des vues ou des tables partagées¶
La création de flux sur des objets partagés (vues et tables sécurisées) vous permet de suivre les modifications du langage de manipulation de données (DML) apportées dans ces objets. Cette fonctionnalité est similaire à la création et à l’utilisation de flux sur des objets « locaux » (c’est-à-dire dans le même compte que le flux).
Le rôle utilisé pour exécuter les instructions SQL dans cette section doit avoir les autorisations requises sur la table partagée ou la vue sécurisée. Pour plus d’informations, voir Accorder des privilèges sur une base de données importée (dans cette rubrique).
Pour plus d’informations sur la création de flux, consultez CREATE STREAM.
Note
Le fournisseur de données doit activer le suivi des modifications sur les vues ou les tables avant que vous puissiez créer des flux sur ces objets. Si vous ne pouvez pas créer de flux sur un objet partagé souhaité, contactez le fournisseur de données pour envisager d’activer le suivi des modifications sur cet objet.
Pour empêcher un flux de devenir périmé, consommez les enregistrements de flux dans une transaction pendant la période de conservation de la table. Contactez le fournisseur de données pour déterminer la période de conservation des données pour la table.
Pour déterminer si un flux est devenu obsolète, exécutez la commande DESCRIBE STREAM ou SHOW STREAMS. Dans la sortie de la commande, lorsque la valeur de la colonne STALE est TRUE, le flux peut être périmé. En pratique, la lecture du flux peut réussir pendant un certain temps après le STALE_AFTER attendu. Toutefois, le flux peut devenir obsolète à tout moment pendant cette période.