Snowsight中Python Snowpark的.show()/print()无输出问题求助
解决方案
情况1:在Snowsight Notebook中运行代码
如果是在Notebook的Python单元格里执行这段代码,问题出在仅定义了main函数但未主动调用——Notebook不会自动触发main函数执行,需添加调用逻辑:
修改代码,在末尾补充:
if __name__ == "__main__": main(session)
重新运行单元格后,print()和.show()的输出会直接显示在单元格的输出区域。
情况2:代码已创建为Stored Procedure并调用
当代码作为Snowflake存储过程运行时,print()和.show()的输出不会显示在Results标签页,而是写入Snowflake日志系统,需按以下操作查看:
- 执行存储过程后,在Snowsight的执行结果页面切换到Logs标签页(而非Results),查看日志内容。
- 若Logs标签仍无输出,需在创建存储过程时显式指定日志级别。创建存储过程的SQL语句要添加
LOG_LEVEL = 'INFO'参数,示例:
CREATE OR REPLACE PROCEDURE YOUR_PROCEDURE_NAME() RETURNS TABLE(...) LANGUAGE PYTHON RUNTIME_VERSION = '3.8' PACKAGES = ('snowflake-snowpark-python') LOG_LEVEL = 'INFO' HANDLER = 'main' AS $$ -- 粘贴你的Python代码 $$;
指定LOG_LEVEL = 'INFO'后,.show()和print()的输出会被记录到日志中。
额外检查项
- 验证当前角色对
information_schema.packages表有SELECT权限,可执行SELECT * FROM information_schema.packages WHERE language = 'python';确认能获取数据。 - 确认使用的Snowpark Python Runtime Version(如3.8、3.9)与Snowflake环境兼容。
内容的提问来源于stack exchange,提问作者user9191983
相关产品推荐
相关产品推荐

