Notebooks privés¶
Dans Snowsight, vous pouvez créer un notebook privé, appartenant à l’utilisateur. Ce notebook privé est stocké dans votre base de données personnelle : un espace de travail dédié dans lequel vous pouvez créer, modifier et gérer vos notebooks privés. Contrairement à la propriété basée sur les rôles, les objets d’une base de données personnelle sont la propriété d’un utilisateur individuel. Vous pouvez créer des notebooks privés dans une base de données personnelle sans avoir à attendre que quelqu’un vous accorde les privilèges appropriés.
Note
Le cycle de vie d’une base de données personnelle est directement lié à son propriétaire. Si un utilisateur est supprimé du compte Snowflake, sa base de données personnelle est également supprimée. C’est pourquoi Snowflake recommande de ne pas utiliser de bases de données personnelles pour des charges de travail critiques ou de production.
Votre base de données personnelle est nommée d’après votre nom d’utilisateur sous la forme USER$username
(par exemple, USER$JOHNDOE
). Vous pouvez également y faire référence avec le préfixe USER$
. Vous pouvez voir les détails de votre base de données personnelle sur Data » Databases.
Un notebook vous permet d’effectuer les tâches suivantes :
Développez en privé du code de manière interactive et expérimentez avec des données et des modèles.
Déployez ces projets en dupliquant les notebooks des bases de données personnelles vers des bases de données régulières et non personnelles.
Note
Les utilisateurs ne peuvent pas créer de tables ou d’autres objets dans une base de données personnelle. Pour la liste complète des limites et des restrictions, voir Limitations.
Conditions préalables à l’utilisation des notebooks privés¶
Avant de créer et d’utiliser des notebooks privés, un administrateur ayant le rôle ACCOUNTADMIN doit effectuer les tâches suivantes :
- Activer la fonction de base de données personnelle au niveau du compte ou pour des utilisateurs spécifiques.
Les bases de données personnelles sont des objets de Snowflake qui permettent aux notebooks de se comporter comme des notebooks privés. Pour obtenir des informations sur l’exécution de cette tâche, reportez-vous aux sections suivantes :
- Si nécessaire, définissez des rôles secondaires appropriés pour les utilisateurs qui vont créer des notebooks privés.
Pour des informations sur l’achèvement de cette tâche, qui pourrait dépendre de l’activation des récents bundles BCR, voir Activer tous les rôles secondaires pour les utilisateurs du notebook privé.
Important
Une fois que l’administrateur a activé les bases de données personnelles, les utilisateurs concernés doivent se déconnecter et se reconnecter pour voir le nouveau comportement de l’interface utilisateur.
Pour plus d’informations sur la création d’un notebook privé, voir Créer un nouveau notebook.
Activer tous les rôles secondaires pour les utilisateurs du notebook privé¶
Avant de créer un notebook privé, veillez à ce que tous les rôles secondaires soient activés. En effet, les notebooks privés appartiennent à l’utilisateur et non à son rôle principal.
Pour activer tous les rôles secondaires d’un utilisateur par défaut, l’utilisateur ou un administrateur peut utiliser la commande ALTER USER pour désactiver la propriété de l’objet DEFAULT_SECONDARY_ROLES ou lui attribuer la valeur (“ALL”) pour l’utilisateur.
Par exemple :
ALTER USER my_user UNSET DEFAULT_SECONDARY_ROLES;
ALTER USER my_user SET DEFAULT_SECONDARY_ROLES = ('ALL');
Après que l’utilisateur ou un administrateur a exécuté l’instruction SQL ci-dessus, l’utilisateur peut créer un notebook privé dans Snowsight (Projects » Notebooks) ou en exécutant des commandes SQL dans une nouvelle feuille de calcul.
Un utilisateur qui souhaite exécuter des commandes SQL dans une feuille de calcul existante doit exécuter l’instruction SQL suivante avant de créer un notebook privé :
USE SECONDARY ROLES ALL;
Activer et désactiver les notebooks privés pour le compte¶
Pour activer ou désactiver les notebooks privés sur un compte Snowflake, utilisez le paramètre ENABLE_PERSONAL_DATABASE.
Propriétés de ENABLE_PERSONAL_DATABASE :
- Type:
Utilisateur — Peut être défini pour Compte > Utilisateur
- Type de données:
Booléen
- Description:
Détermine si les utilisateurs ont accès aux notebooks privés.
- Valeurs:
TRUE
: permet aux utilisateurs d’accéder à leurs bases de données personnelles.FALSE
: empêche les utilisateurs d’accéder à leurs bases de données personnelles.- Par défaut:
FALSE
Exemples¶
Pour activer les notebooks privés pour le compte, utilisez la commande ALTER ACCOUNT afin de définir le paramètre ENABLE_PERSONAL_DATABASE sur TRUE. Par exemple :
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
Vous ne pouvez pas modifier un autre compte ; vous ne pouvez modifier que le compte actuel. Pour plus d’informations sur cette commande, voir ALTER ACCOUNT.
Pour désactiver les notebooks privés pour le compte, exécutez la même commande mais donnez au paramètre la valeur FALSE. Par exemple :
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
Pour vérifier la valeur actuelle du paramètre ENABLE_PERSONAL_DATABASE, exécutez la commande suivante SHOW PARAMETERS :
SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
Une fois que l’administrateur a activé le paramètre pour le compte, l’utilisateur doit se déconnecter et se reconnecter. L’utilisateur peut ensuite vérifier que la base de données personnelle a bien été créée en exécutant la commande USE DATABASE :
USE DATABASE USER$;
Vous pouvez nommer l’utilisateur actuel de manière explicite en spécifiant le préfixe USER$
suivi du nom d’utilisateur de connexion. Par exemple :
USE DATABASE USER$bobr;
Ces commandes aboutissent lorsque la base de données personnelle de l’utilisateur actuel existe. La commande USE DATABASE renvoie une erreur si la base de données personnelle n’existe pas (parce que les tâches préalables n’ont pas été effectuées) ou s’il ne s’agit pas de la base de données personnelle de l’utilisateur actuel. Par exemple, si jlap
n’est pas l’utilisateur actuel, le message suivant apparaît :
USE DATABASE USER$jlap;
ERROR: Insufficient privileges to operate on database 'USER$JLAP'
Note
Les bases de données personnelles n’ont pas de propriétaire spécifique ; ce sont des objets appartenant au système.
Vous ne pouvez pas créer des bases de données personnelles par vous-même. Elles sont « créées paresseusement » en arrière-plan pour les utilisateurs existants lorsque le compte est activé pour les notebooks privés. La première fois qu’un utilisateur exécute une commande avec une résolution de nom explicite USER$, la base de données personnelle est créée. Par exemple, l’exécution de la commande USE DATABASE USER$ entraîne la création paresseuse de la base de données personnelle de l’utilisateur actuel.
Activer et désactiver des notebooks privés pour les utilisateurs individuels¶
Les administrateurs peuvent souhaiter que des utilisateurs spécifiques du compte aient un accès personnel à la base de données, plutôt que tous les utilisateurs du compte. Pour accorder l’accès à des utilisateurs donnés, utilisez la commande ALTER USER afin de définir le paramètre ENABLE_PERSONAL_DATABASE sur TRUE pour ces utilisateurs. Par exemple, autorisez l’accès à trois utilisateurs :
ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
Si vous activez les bases de données personnelles au niveau du compte, vous pouvez désactiver les bases de données personnelles pour les utilisateurs individuels, si nécessaire. Pour désactiver les utilisateurs, exécutez la même commande mais définissez le paramètre sur la valeur FALSE. Par exemple :
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
Si l’utilisateur jlap
spécifie le préfixe USER$
dans une commande, la commande échouera car la base de données personnelle n’existe pas.
NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.
Note
Si vous activez puis désactivez les bases de données personnelles pour un utilisateur spécifique, l’utilisateur perd l’accès à la base de données personnelle qui a été créée, mais la base de données continue d’exister.
Créer un notebook privé¶
Pour créer un notebook privé, procédez comme suit :
Connectez-vous à Snowsight.
Sélectionnez Projects » Notebooks dans le menu de navigation de gauche.
Sélectionnez + Notebook.
Sélectionnez votre nom d’utilisateur dans la liste Owner.
Saisissez un nom pour votre notebook.
Note
Si vous utilisez une région AWS, vous pouvez spécifier l’environnement d’exécution de votre notebook : Warehouse Runtime ou Container Runtime.
Sélectionnez un Notebook location. Il s’agit de la base de données et du schéma dans lesquels votre notebook sera stocké. Ce paramètre ne peut pas être modifié après la création du notebook. Si vous créez un notebook privé après l’activation des bases de données personnelles pour votre compte, votre base de données personnelle sera préremplie par défaut sous Notebook location. Toutefois, si vous créez un notebook privé et qu’il n’y a qu’un seul schéma dans votre base de données personnelle, les options Notebook location ne sont pas disponibles.
Note
Il se peut que la liste déroulante Notebook location n’affiche pas les bases de données créées après l’ouverture de la boîte de dialogue Create Notebook. Si vous ne trouvez pas la base de données, le schéma ou l’entrepôt que vous venez de créer, essayez de recharger la fenêtre de votre navigateur.
La requête de données dans le notebook n’est pas limitée à cet emplacement. Dans le notebook, vous pouvez effectuer des requêtes sur les données de tous les emplacements auxquels vous avez accès. Pour spécifier l’emplacement, exécutez USE WAREHOUSE et USE SCHEMA.
Sélectionnez Run on warehouse ou Run on container comme environnement Python.
Facultatif Sélectionnez un Query warehouse pour exécuter n’importe quelle requête SQL ou Snowpark émise par le notebook.
Sélectionnez un Notebook warehouse pour exécuter des tâches spécifiques au notebook. Snowflake vous recommande d’utiliser SYSTEM$STREAMLIT_NOTEBOOK_WH, un entrepôt géré par Snowflake et provisionné dans chaque compte pour l’exécution de notebooks.
Sélectionnez Create pour créer et ouvrir votre notebook.
Organiser vos notebooks privés¶
Vous pouvez créer et utiliser des schémas pour organiser vos notebooks privés. Par défaut, les bases de données personnelles contiennent les schémas standard nommés PUBLIC et INFORMATION_SCHEMA.
Créez et utilisez de nouveaux schémas de la manière habituelle, mais assurez-vous que vous utilisez votre base de données personnelle lorsque vous créez des schémas. Par exemple :
USE DATABASE USER$bobr;
CREATE SCHEMA bobr_schema;
USE SCHEMA bobr_schema;
Vous pouvez également utiliser la commande ALTER SCHEMA sur les schémas des bases de données personnelles, et vous pouvez utiliser la commande SHOW SCHEMAS pour voir les schémas qui appartiennent aux bases de données personnelles. Par exemple :
ALTER SCHEMA bobr_schema RENAME TO bobr_personal_schema;
SHOW TERSE SCHEMAS;
+-------------------------------+----------------------+------+---------------+-------------+
| created_on | name | kind | database_name | schema_name |
|-------------------------------+----------------------+------+---------------+-------------|
| 2024-10-28 19:33:18.437 -0700 | BOBR_PERSONAL_SCHEMA | NULL | USER$BOBR | NULL |
| 2024-10-29 14:11:33.267 -0700 | INFORMATION_SCHEMA | NULL | USER$BOBR | NULL |
| 2024-10-28 12:47:21.502 -0700 | PUBLIC | NULL | USER$BOBR | NULL |
+-------------------------------+----------------------+------+---------------+-------------+
Rendre un notebook privé disponible pour usage général¶
À un moment donné de son développement, vous souhaiterez peut-être recréer votre notebook en dehors de votre base de données personnelle. Pour effectuer cette modification, dupliquez le notebook original à l’aide d’une commande CREATE NOTEBOOK. Lorsque vous faites cela, le notebook devient visible pour les autres utilisateurs.
Par exemple :
CREATE NOTEBOOK bobr_prod_notebook
FROM 'snow://notebook/USER$BOBR.PUBLIC.bobr_private_notebook/versions/version$1/'
QUERY_WAREHOUSE = 'PUBLIC_WH'
MAIN_FILE = 'notebook_app.ipynb'
COMMENT = 'Duplicated from personal database';
Notebook BOBR_PROD_NOTEBOOK successfully created.
Vous pouvez également créer un notebook privé à partir d’un notebook créé dans une base de données de production.
Note
Vous ne pouvez pas effectuer cette tâche via l’interface utilisateur Snowsight ; vous devez utiliser une commande SQL explicite (dans une cellule SQL d’un notebook ou dans une feuille de calcul, par exemple).
FROM 'source_location'
Indique que le notebook doit être créé à partir d’un fichier
.ipynb
se trouvant à l’emplacement spécifié dans la zone de préparation :Pour créer le notebook à partir d’un fichier dans une zone de préparation, définissez
source_location
sur l’emplacement de la zone de préparation du fichier et définissez le paramètre MAIN_FILE sur le nom du fichier.Pour créer le notebook à partir d’un notebook privé (par exemple, pour rendre un notebook privé disponible pour une utilisation partagée), définissez ce paramètre sur :
'snow://notebook/USER$username.schema.notebook/versions/version$1/'
Où :
username
est votre nom d’utilisateur.schema
est le nom du schéma qui contient le notebook privé.notebook
est le nom du notebook privé.
Si ce paramètre n’est pas spécifié, l’objet du notebook est créé à partir d’un modèle de notebook.
Voir des informations sur les notebooks privés et les bases de données personnelles¶
Les utilisateurs individuels peuvent utiliser Snowsight pour voir les informations relatives à leurs notebooks. Allez à Projects » Notebooks. Le propriétaire du notebook est annoncé comme l’utilisateur.
Pour obtenir des informations sur les bases de données, y compris les bases de données personnelles, accédez à Data » Databases. Vous pouvez facilement voir quelles sont les bases de données personnelles car elles portent le préfixe USER$
.
Visibilité de l’administrateur¶
Les rôles dotés du privilège MANAGE GRANTS ont une visibilité sur tous les objets du compte, y compris les objets personnels appartenant à des utilisateurs individuels. Par exemple, des rôles tels que ACCOUNTADMIN peuvent, par défaut, voir toutes les bases de données, y compris les bases de données personnelles. Ces rôles peuvent également accéder aux détails des schémas et des notebooks privés au sein des bases de données personnelles.
Pour visualiser les détails de toutes les bases de données personnelles d’un compte, effectuez une requête sur la vue DATABASES Account Usage :
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES;
Les administrateurs peuvent utiliser DESCRIBE NOTEBOOK pour voir les propriétés d’un notebook privé spécifique :
DESCRIBE NOTEBOOK USER$.PUBLIC.bobr_private_notebook;
Sur la page Projects » Notebooks de Snowsight, les administrateurs ne peuvent pas voir les objets de notebook privé qui appartiennent à d’autres utilisateurs figurant dans la liste Notebooks.
Pour afficher la base de données personnelle d’un utilisateur en cours :
SHOW DATABASES LIKE 'USER$BOBR';
Pour les bases de données personnelles, la valeur de la colonne kind
est PERSONAL DATABASE
.
Limitations¶
Limites des notebooks privés¶
Les notebooks privés ne peuvent pas être planifiés.
Limites des bases de données personnelles¶
Les utilisateurs ne peuvent créer de notebooks et de schémas personnels qu’à l’intérieur d’une base de données personnelle. Par exemple, les tables ne peuvent pas être créées et chargées.
Les utilisateurs ne peuvent pas modifier, cloner ou répliquer leur base de données personnelle.
Les utilisateurs ne peuvent pas déplacer les schémas entre les bases de données personnelles et non personnelles.
Les bases de données personnelles ne peuvent pas être partagées avec les rôles.
Les administrateurs ne peuvent pas ajouter une base de données personnelle à un groupe de réplication à des fins de réplication.
Les utilisateurs ne peuvent pas partager des objets contenus dans des bases de données personnelles.
Les utilisateurs ne peuvent pas ajouter une base de données personnelle à des applications Native Apps (paquets d’applications).
Les utilisateurs et les administrateurs ne peuvent pas supprimer et/ou renommer le schéma
USER$.PUBLIC
.
Limites en matière de collaboration¶
Les administrateurs ne peuvent pas créer de rôles de base de données.
Les utilisateurs et les administrateurs ne peuvent pas accorder à d’autres personnes les privilèges liés à l’objet
CREATE <>
sur leurs schémas à d’autres.Les utilisateurs ne peuvent pas accorder de privilèges sur leurs objets aux partages ou aux paquets d’application.
Les utilisateurs ne peuvent pas accorder le privilège
REFERENCE_USAGE
sur leur base de données personnelle à des partages ou à des paquets.Les utilisateurs ne peuvent pas ajouter une base de données personnelle à un partage (à des fins de partage entre comptes).