使用来自snowpark的已部署的Snowflake UDF

问题描述 投票:0回答:1

因此,我有一组预构建和预部署的 Python UDF,我想在 Snowpark 程序中使用它们。我在 SQL 中定义了 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 中的 UDF。比如:

df = df.withColumn(col, dg_utility__field_contains_phone_number(col))

有没有办法做到这一点,或者我是否需要在我的 Snowpark 程序中重新定义 dg_utility__field_contains_phone_number ?

我希望能够在 SQL 和 python 之间共享 UDF。我想我可以只使用 session.sql,但这需要我针对我想要应用这些函数的数据帧生成动态 SQL,我希望避免这种情况。

python snowflake-cloud-data-platform user-defined-functions
1个回答
0
投票

来自 snowpark.functions.call_udf

的文档
from snowflake.snowpark.types import IntegerType
from snowflake.snowpark.functions import call_udf
udf_def = session.udf.register(lambda x, y: x + y, name="add_columns", input_types=[IntegerType(), IntegerType()], return_type=IntegerType(), replace=True)
df = session.create_dataframe([[1, 2]], schema=["a", "b"])
df.select(call_udf("add_columns", col("a"), col("b"))).show()

| "ADD_COLUMNS(""A"", ""B"")" |

| 3 |

© www.soinside.com 2019 - 2024. All rights reserved.