因此,我有一组预构建和预部署的 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,我希望避免这种情况。
来自 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()
| 3 |