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

如何在Snowpark Python DSL中调用已部署的Snowflake UDF?

Snowpark Python DSL调用已部署SQL UDF的实现方案

问题背景

已通过SQL创建并部署完成Python UDF,示例定义如下:

CREATE OR REPLACE FUNCTION dg_utility__field_contains_phone_number(str string, pre_clean boolean)
RETURNS BOOLEAN
LANGUAGE PYTHON
RUNTIME_VERSION = 3.8
HANDLER = 'dg_utility__field_contains_phone_number'
AS
$$
.......udf stuff
$$;

希望在Snowpark Python DSL中直接以类似df = df.withColumn(col, dg_utility__field_contains_phone_number(col))的方式调用该UDF,无需重新定义UDF,也不想通过session.sql生成动态SQL处理DataFrame。

解答

完全可以实现该需求,不需要在Snowpark程序中重新定义UDF,具体操作如下:

  1. 从Snowpark会话加载已部署的UDF
    通过session.udf.get()方法直接获取已注册的UDF,无需重复编写UDF代码:
from snowflake.snowpark.functions import lit

# 加载已部署的UDF
dg_utility__field_contains_phone_number = session.udf.get("dg_utility__field_contains_phone_number")
  1. 在Snowpark DSL中直接调用
    加载完成后,该UDF对象可像原生Snowpark函数一样在DataFrame操作中使用:
# 示例:传入目标列和布尔参数调用UDF
df = df.withColumn("has_phone", dg_utility__field_contains_phone_number(df["target_column"], lit(True)))

这种方式实现了SQL与Python DSL之间的UDF共享,既避免了代码重复,也无需依赖动态SQL拼接,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:41:02