Snowflake存储过程中snowpark-python版本异常问题求助
Snowpark Python存储过程版本不匹配问题解决办法
核心问题
部署存储过程时未指定snowflake-snowpark-python版本,Snowflake默认调用1.0.0旧版本,而explode()函数仅在1.4.0及以上版本提供,导致执行报错。
解决步骤
1. 创建存储过程时明确指定版本
在创建存储过程的SQL中,通过PACKAGES参数指定所需的1.4.0版本:
CREATE OR REPLACE PROCEDURE YOUR_PROCEDURE_NAME() RETURNS VARCHAR LANGUAGE PYTHON RUNTIME_VERSION = '3.8' PACKAGES = ('snowflake-snowpark-python==1.4.0') HANDLER = 'your_handler_function' AS $$ from snowflake.snowpark import Session from snowflake.snowpark.functions import explode, col def your_handler_function(session: Session): # 示例:使用explode处理数组列 df = session.table("TARGET_TABLE").select(explode(col("ARRAY_COLUMN")).alias("EXPLODED_VALUE")) df.collect() return "执行完成" $$;
2. 验证版本是否生效
执行以下SQL查看存储过程的包配置:
SHOW PROCEDURES LIKE 'YOUR_PROCEDURE_NAME';
在返回结果的PACKAGES列中,确认已包含snowflake-snowpark-python==1.4.0。
3. 本地与部署版本保持一致
确保本地开发环境安装的版本和部署版本一致,避免开发与生产环境差异:
pip install snowflake-snowpark-python==1.4.0
内容的提问来源于stack exchange,提问作者Deepa KP
相关产品推荐
相关产品推荐

