如何在Snowsight Python工作表中通过代码指定Snowpark特定Schema
Snowpark在Snowsight Python工作表中切换Schema的问题解决
问题说明
在Snowsight的Python工作表中编写Snowpark代码时,希望通过代码切换指定Schema(替代UI手动选择操作)。尝试使用session.use_schema('MY_SCHEMA')时触发GENERAL_INVALID_OBJECT_NAME错误,但该Schema在当前激活的数据库下确实存在。
基础可运行代码
import snowflake.snowpark as snowpark from snowflake.snowpark.functions import col def main(session: snowpark.Session): df_sql = session.sql("SELECT CURRENT_ACCOUNT(), CURRENT_USER(), CURRENT_ROLE(), CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA()") return df_sql
报错测试代码
import snowflake.snowpark as snowpark from snowflake.snowpark.functions import col def main(session: snowpark.Session): session.use_schema('MY_SCHEMA') df_sql = session.sql("SELECT CURRENT_ACCOUNT(), CURRENT_USER(), CURRENT_ROLE(), CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA()") return df_sql
解决办法
方法1:指定完整的数据库+Schema路径
直接传入数据库与Schema的完整限定名,确保Snowpark能精准定位目标Schema:
session.use_schema('MY_DATABASE.MY_SCHEMA')
方法2:执行原生SQL切换Schema
通过执行USE SCHEMA原生SQL语句,绕开API方法可能存在的上下文识别问题,实现更直接的切换:
session.sql("USE SCHEMA MY_SCHEMA").collect()
验证方式
切换完成后,执行以下代码确认Schema是否成功切换:
result = session.sql("SELECT CURRENT_SCHEMA()").collect() print(result)
内容的提问来源于stack exchange,提问作者Rakesh_IND
相关产品推荐
相关产品推荐

