如何获取当前运行的Snowpark Python存储过程名称
如何获取当前运行的Snowpark Python存储过程名称
嘿,这个需求很实用!要在Snowpark Python存储过程里拿到当前正在运行的存储过程名称,用Snowflake的内置系统函数就能轻松搞定,我结合你的例子给你一步步说明:
首先,Snowflake自带了CURRENT_PROCEDURE()这个系统函数,它会返回当前执行的存储过程的完全限定名称(格式是数据库名.模式名.存储过程名)。在Python存储过程里,我们可以通过Snowpark Session执行这个SQL,拿到结果后再按需处理。
修改你原有的存储过程代码,调整后如下:
CREATE OR REPLACE PROCEDURE copydata(fromtable VARCHAR, totable VARCHAR, count INT) RETURNS STRING LANGUAGE PYTHON RUNTIME_VERSION = '3.8' PACKAGES = ('snowflake-snowpark-python') HANDLER = 'run' AS $$ def run(session, from_table, to_table, count): # 获取当前存储过程的完全限定名称 full_proc_name = session.sql("SELECT CURRENT_PROCEDURE()").collect()[0][0] # 只提取存储过程本身的名称(去掉数据库和模式前缀) proc_name = full_proc_name.split('.')[-1] session.table(from_table).limit(count).write.save_as_table(to_table) return f"SUCCESS {proc_name}" $$;
调用这个存储过程后,它就会返回类似SUCCESS COPYDATA的结果啦。要是你需要保留完整的限定名称,直接用full_proc_name就行,不用拆分~
备注:内容来源于stack exchange,提问作者orellabac
相关产品推荐
相关产品推荐

