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

Snowflake Python UDF能否访问部署库表并使用非默认Python包?

Snowflake Python UDF常见问题解答

1. 能否访问部署所在的数据库表及模式?

可以访问,但需满足以下条件:

  • UDF的所有者必须拥有目标表/模式的对应权限(如SELECT、INSERT等)
  • 代码中需通过Snowflake官方提供的Snowpark API或者SQL执行语句来操作表,示例如下:
def get_table_count():
    from snowflake.snowpark import Session
    session = Session.builder.getOrCreate()
    # 建议使用全限定名指定表(数据库.模式.表)
    df = session.table("MY_DB.MY_SCHEMA.MY_TABLE")
    return df.count()
  • UDF默认继承当前会话的数据库/上下文,但显式指定全限定名能避免歧义。

2. 是否支持使用非默认Python包?

支持,有两种常用方式:

  • 使用Snowflake集成的Anaconda仓库:大部分主流Python包(如pandas、numpy)可直接通过packages参数指定版本引入,无需自行打包上传,示例:
create or replace function pandas_demo(data string)
returns string
language python
runtime_version = '3.8'
packages = ('pandas==1.3.5')
handler = 'pandas_demo_py'
as
$$
import pandas as pd
def pandas_demo_py(data):
    df = pd.DataFrame([data], columns=['input'])
    return df.to_string()
$$;
  • 上传自定义包到Snowflake阶段:对于Anaconda仓库没有的包,可将包打包成zip文件上传至Snowflake内部/外部阶段,然后在创建UDF时通过imports参数指定包的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:22:34