Snowflake Notebooks 中的会话上下文¶
笔记本的会话上下文由您在创建笔记本时定义的角色、仓库、数据库和架构定义。当您运行笔记本时,它会以该角色运行,使用笔记本中定义的仓库,并在包含笔记本的数据库和架构上下文中运行。
本主题介绍如何访问或更改笔记本的会话上下文。
访问笔记本的会话上下文¶
您可以使用 Python 和 SQL 访问会话上下文。
如果您正在使用 Snowpark Python 库或 Snowflake Python APIs,请使用 get_active_session() 方法获取活动会话上下文。
from snowflake.snowpark.context import get_active_session
session = get_active_session()
对于 SQL,您可以使用 :doc:`/sql-reference/functions-context`SQL 函数。
SELECT CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA();
更改笔记本的会话上下文¶
您可以更改笔记本的会话上下文以使用不同的角色、数据库和架构和/或仓库:
指定要与 USE ROLE SQL 命令搭配使用的其他角色。
您可以通过调用 CURRENT_ROLE 函数来检查笔记本正在使用的角色。
如果您将角色更改为无权使用笔记本仓库、数据库或架构的角色,则需要仓库或访问笔记本数据库或架构的查询将无法运行。但是,您仍然可以运行不使用笔记本仓库、数据库和架构的查询。
使用 USE ROLE SQL 命令指定的角色不会在笔记本会话中持续存在。
如果指定当前活动角色无权访问的数据库或架构,则使用该数据库和架构的查询将无法运行。
如果运行 SQL 命令 USE SECONDARY ROLES 来将次要角色设为 ALL,则与用户相关的次要角色用于生成笔记本单元的结果。
使用 SQL 命令 USE WAREHOUSE 指定不同的仓库。
您可以通过调用 CURRENT_WAREHOUSE 函数来检查笔记本正在使用的仓库。
使用 USE DATABASE 或 USE SCHEMA SQL 命令指定不同的数据库或架构。
您可以通过调用 CURRENT_DATABASE 函数来检查笔记本正在使用的数据库。
如果您引用笔记本数据库或较早的笔记本单元中指定的数据库中的对象,则可以简化 SQL 语句,使其仅包含要引用的架构和对象,而不是对象的完整限定路径。