专用笔记本¶
在 Snowsight 中,您可以创建用户所有的专用笔记本。此专用笔记本存储在您的个人数据库中:一个专用的工作区,您可以在其中创建、修改和管理专用笔记本。与基于角色的所有权不同,个人数据库中的对象归个人用户所有。您可以在个人数据库中创建专用笔记本,无需等待他人授予适当权限。
备注
个人数据库的生命周期与其所有者直接相关。如果将用户从 Snowflake 账户中删除,其个人数据库也会被删除。因此,Snowflake 建议不要将个人数据库用于业务关键工作负载或生产工作负载。
个人数据库以表单 USER$username
中的用户名命名(例如 USER$JOHNDOE
)。您也可以用前缀 USER$
来进行引用。您可以在 Data » Databases 中查看个人数据库的详细信息。
专用笔记本可以执行以下任务:
私下以交互方式开发代码并尝试数据和模型。
通过将笔记本从个人数据库复制到常规的非个人数据库来部署这些项目。
备注
用户不能在个人数据库中创建表或其他对象。有关限制和约束的完整列表,请参阅 限制。
使用专用笔记本的先决条件¶
在创建和使用专用笔记本之前,具有 ACCOUNTADMIN 角色的管理员必须先完成以下任务:
- 在账户级别或对特定用户启用个人数据库功能。
个人数据库是 Snowflake 对象,使笔记本能够作为专用笔记本。有关完成此任务的信息,请参阅以下部分:
- 如有必要,为将要创建专用笔记本的用户适当设置次要角色。
有关完成此任务的信息,可能取决于近期 BCR 捆绑包的启用,请参阅 激活专用笔记本用户的所有次要角色。
重要
在管理员启用个人数据库后,受影响的用户必须注销并重新登录才能看到新的用户界面行为。
有关创建专用笔记本的详细信息,请参阅 创建新笔记本。
激活专用笔记本用户的所有次要角色¶
在创建专用笔记本之前,必须先启用 所有 次要角色。这是因为专用笔记本归用户所有,而非其主要角色。
要在默认情况下激活用户的所有次要角色,用户或管理员可以使用 ALTER USER 命令取消设置该用户的 DEFAULT_SECONDARY_ROLES 对象属性,或者设置为 ('ALL') 。
例如:
ALTER USER my_user UNSET DEFAULT_SECONDARY_ROLES;
ALTER USER my_user SET DEFAULT_SECONDARY_ROLES = ('ALL');
在用户或管理员执行上述 SQL 语句后,可在 |sf-web-interface|(项目 |ra| 笔记本)或在 新 工作表中执行 SQL 命令,创建专用笔记本。
要在现有工作表中执行 SQL 命令的用户必须在创建专用笔记本前执行以下 SQL 语句:
USE SECONDARY ROLES ALL;
为账户启用和禁用专用笔记本¶
要在 Snowflake 账户上启用或禁用专用笔记本,请使用 ENABLE_PERSONAL_DATABASE 参数。
ENABLE_PERSONAL_DATABASE 的属性:
- 类型:
用户 – 可以为 Account > User 设置
- 数据类型:
布尔
- 描述:
控制用户是否有权访问专用笔记本。
- 值:
TRUE
:允许用户访问其个人数据库。FALSE
:阻止用户访问其个人数据库。- 默认值:
FALSE
示例¶
要为账户启用用笔记本,请使用 ALTER ACCOUNT 命令,将 ENABLE_PERSONAL_DATABASE 参数设置为 TRUE。例如:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
您无法更改其他账户;只能更改当前账户。有关此命令的更多信息,请参阅 ALTER ACCOUNT。
要为该账户禁用专用笔记本,请运行相同的命令,但将参数设置为 FALSE。例如:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
要检查 ENABLE_PERSONAL_DATABASE 参数的当前值,请运行以下 SHOW PARAMETERS 命令:
SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
管理员为账户启用该参数后,用户必须注销并重新登录。然后,用户可以通过运行 USE DATABASE 命令来检查是否已创建个人数据库:
USE DATABASE USER$;
您可以通过指定 USER$
前缀加登录用户名来明确命名当前用户。例如:
USE DATABASE USER$bobr;
这些命令在当前用户的个人数据库存在时成功执行。如果个人数据库不存在(因为先决条件任务未完成)或如果它不是当前用户的个人数据库,则 USE DATABASE 命令返回错误。例如,如果 jlap
不是当前用户,则会出现以下消息:
USE DATABASE USER$jlap;
ERROR: Insufficient privileges to operate on database 'USER$JLAP'
备注
个人数据库没有特定的所有者;它们是系统所有的对象。
您无法自己创建个人数据库。当账户启用专用笔记本时,它们会在后台为现有用户“懒创建”。用户第一次运行带有显式 USER$ 名称解析的命令时,将创建个人数据库。例如,运行命令 USE DATABASE USER$ 会为当前用户懒创建个人数据库。
为个别用户启用和禁用专用笔记本¶
管理员可能希望账户中的特定用户具有个人数据库访问权限,而不是账户中的所有用户。要为特定用户启用访问权限,请使用 ALTER USER 命令为这些用户将 ENABLE_PERSONAL_DATABASE 参数设置为 TRUE。例如,为三个用户启用访问权限:
ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
如果您在账户级别启用个人数据库,您可以根据需要为单个用户禁用个人数据库。要禁用用户,请运行相同的命令,但将参数设置为 FALSE。例如:
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
如果用户 jlap
在任何命令中指定 USER$
前缀,该命令将失败,因为个人数据库不存在。
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.
备注
如果您为特定用户启用然后禁用个人数据库,该用户将失去对已创建个人数据库的访问权限,但该数据库仍然存在。
创建专用笔记本¶
要创建新的专用笔记本,请按照以下步骤操作:
登录 Snowsight。
在左侧导航菜单中选择 Projects » Notebooks。
选择 + Notebook。
从 Owner 列表中选择您的用户名。
输入笔记本的名称。
备注
如果您使用的是 AWS 区域,您可以为您的笔记本指定运行时环境:可以选择仓库运行时或 容器运行时。
选择 Notebook location。这是存储您的笔记本的数据库和架构。创建笔记本后,这些内容便无法更改。如果您在为账户启用个人数据库后创建专用笔记本,则默认情况下,您的个人数据库将在 Notebook location 下预先填充。但是,如果要创建专用笔记本,并且个人数据库中只有一个架构,则 Notebook location 选项不可用。
备注
您打开 Create Notebook 对话框之后创建的数据库可能不会显示在 Notebook location 下拉菜单中。如果您找不到最近创建的数据库、架构或仓库,请尝试重新加载浏览器窗口。
在笔记本中查询数据并不局限于此位置。在笔记本中,您可以查询可以访问的任意位置的数据。要指定位置,请运行 USE WAREHOUSE 和 USE SCHEMA。
选择 Run on warehouse 或 Run on container 作为您的 Python 环境。
可选 选择 Query warehouse 来运行笔记本发出的任何 SQL 和 Snowpark 查询。
选择一个 Notebook warehouse 来运行笔记本特定的任务。Snowflake 建议您使用 SYSTEM$STREAMLIT_NOTEBOOK_WH,这是一个由 Snowflake 管理的仓库,在用于运行笔记本的每个账户中提供。
选择 Create 来创建和打开笔记本。
整理专用笔记本¶
您可以创建和使用架构,作为整理专用笔记本的一种方式。默认情况下,个人数据库包含名为 PUBLIC 和 INFORMATION_SCHEMA 的标准架构。
以通常的方式创建和使用新架构,但确保在创建架构时使用您的个人数据库。例如:
USE DATABASE USER$bobr;
CREATE SCHEMA bobr_schema;
USE SCHEMA bobr_schema;
您也可以对个人数据库中的架构使用 ALTER SCHEMA 命令,并可使用 SHOW SCHEMAS 命令来查看属于个人数据库的架构。例如:
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 |
+-------------------------------+----------------------+------+---------------+-------------+
将专用笔记本设为一般用途可用¶
在其开发的某个时刻,您可能需要在个人数据库外重新创建笔记本。要进行此更改,请使用 CREATE NOTEBOOK 命令复制原始笔记本。执行此操作时,其他用户可以看到该笔记本。
例如:
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.
您也可以使用在生产数据库中创建的笔记本来创建专用笔记本。
备注
您无法通过 Snowsight 用户界面完成此任务;必须使用明确的 SQL 命令(例如,在笔记本的 SQL 单元格中或工作表中)。
FROM 'source_location'
指定应从指定暂存区位置的
.ipynb
文件中创建的笔记本:要从暂存区上的文件创建笔记本,请将
source_location
设置为文件的暂存区位置,并将 MAIN_FILE 参数设置为文件名。要从私人笔记本创建笔记本(例如,将私人笔记本用于共享用途),请将此参数设置为:
'snow://notebook/USER$username.schema.notebook/versions/version$1/'
其中:
username
是您的用户名。schema
是包含私人笔记本的架构的名称。notebook
是私人笔记本的名称。
如果未指定此参数,则通过模板笔记本创建笔记本对象。
查看有关专用笔记本和个人数据库的信息¶
个人用户可以使用 Snowsight 来查看有关其笔记本的信息。前往 Projects » Notebooks。笔记本的所有者被列为用户。
有关数据库(包括个人数据库)的信息,请访问 Data » Databases。您可以轻松查看哪些数据库是个人数据库,因为个人数据库有 USER$
前缀。
管理员可见性¶
拥有 MANAGE GRANTS 权限的角色可以查看账户内的所有对象,包括个别用户拥有的个人对象。例如,在默认情况下,ACCOUNTADMIN 等角色可以查看所有数据库,包括个人数据库。这些角色还可以访问个人数据库中有关架构和专用笔记本的详细信息。
要查看账户内所有个人数据库的详细信息,请查询 DATABASES Account Usage 视图:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES;
管理员可使用 DESCRIBE NOTEBOOK 查看特定专用笔记本的属性:
DESCRIBE NOTEBOOK USER$.PUBLIC.bobr_private_notebook;
在 Snowsight 的 Projects » Notebooks 页面上,管理员无法在 Notebooks 列表中看到属于其他用户的专用笔记本对象。
显示当前用户的个人数据库:
SHOW DATABASES LIKE 'USER$BOBR';
对于个人数据库,kind
列中的值为 PERSONAL DATABASE
。
限制¶
专用笔记本限制¶
无法计划专用笔记本。
个人数据库限制¶
用户只能在个人数据库中创建专用笔记本和架构。例如,无法创建和加载表。
用户无法更改、克隆或复制其个人数据库。
用户无法在个人和非个人数据库间移动架构。
个人数据库不能与角色共享。
管理员不能将个人数据库添加到复制组以进行复制。
用户不能共享个人数据库中的对象。
用户无法将个人数据库添加到原生应用程序(应用程序包)。
用户和管理员无法删除和/或重命名
USER$.PUBLIC
架构。
协作限制¶
管理员无法创建数据库角色。
用户和管理员无法向其他人授予其架构的任何
CREATE <object>
权限。用户无法将其对象的权限授予共享或应用程序包。
用户无法将其个人数据库的
REFERENCE_USAGE
权限授予共享或应用程序包。用户无法将个人数据库添加到共享中(以实现跨账户共享)。