You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake Python Worksheet中Main Handler带额外参数的部署问题

Snowpark Python Worksheet及存储过程接收自定义参数的正确实现方式

问题场景

开发部署可接收用户输入的Snowpark代码至Python Worksheet时,尝试给main函数添加自定义参数:

import snowflake.snowpark as snowpark

def main(session: snowpark.Session, param):
    df = session.table('snowflake_sample_data.tpch_sf10.lineitem').limit(param)
    return df

触发报错:

**Handler参数数量超出预期。**函数签名必须仅包含一个参数:

def main(session: snowpark.Session):

同时将代码部署为存储过程时,出现报错:

无法创建存储过程my_proc。
执行查询失败:Python函数定义包含2个参数(含session),但存储过程定义包含0个参数。函数MY_PROC的处理程序main的Python函数参数应为session和存储过程定义的参数


解决方案

一、Python Worksheet中接收用户输入

Python Worksheet的main函数仅支持session这一个固定参数,无法直接添加自定义参数。需通过session.get_parameter()读取工作表配置的参数:

示例代码:

import snowflake.snowpark as snowpark

def main(session: snowpark.Session):
    # 读取参数,第二个参数为默认值(需转为对应数据类型)
    param = int(session.get_parameter('LIMIT_PARAM', '10'))
    df = session.table('snowflake_sample_data.tpch_sf10.lineitem').limit(param)
    return df

操作说明:在Python Worksheet界面打开「参数」面板,添加键为LIMIT_PARAM的参数并设置对应数值即可。

二、部署为带参数的存储过程

创建存储过程时,必须在SQL语句中明确定义参数,且Pythonmain函数的参数(除session外)需与存储过程参数一一对应:

1. 编写带参数的Python函数

import snowflake.snowpark as snowpark

def main(session: snowpark.Session, param: int):
    df = session.table('snowflake_sample_data.tpch_sf10.lineitem').limit(param)
    return df

2. 执行创建存储过程的SQL

CREATE OR REPLACE PROCEDURE my_proc(param INT)
RETURNS TABLE(
    L_ORDERKEY NUMBER(38,0),
    L_PARTKEY NUMBER(38,0),
    L_SUPPKEY NUMBER(38,0),
    L_LINENUMBER NUMBER(38,0),
    L_QUANTITY NUMBER(12,2),
    L_EXTENDEDPRICE NUMBER(12,2),
    L_DISCOUNT NUMBER(12,2),
    L_TAX NUMBER(12,2),
    L_RETURNFLAG CHAR(1),
    L_LINESTATUS CHAR(1),
    L_SHIPDATE DATE,
    L_COMMITDATE DATE,
    L_RECEIPTDATE DATE,
    L_SHIPINSTRUCT CHAR(25),
    L_SHIPMODE CHAR(10),
    L_COMMENT VARCHAR(44)
)
LANGUAGE PYTHON
RUNTIME_VERSION = '3.10'
PACKAGES = ('snowflake-snowpark-python')
HANDLER = 'main';

3. 调用存储过程

CALL my_proc(50);

内容的提问来源于stack exchange,提问作者Lukasz Szozda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 18:32:38