在 Snowpark Python 中调用函数和存储过程¶
若要处理 DataFrame 中的数据,可以调用系统定义的 SQL 函数、用户定义的函数和存储过程。本主题介绍如何在 Snowpark 中调用它们。
若要处理 DataFrame 中的数据,可以调用系统定义的 SQL 函数、用户定义的函数和存储过程。
调用系统定义的函数¶
如需调用 系统定义的 SQL 函数,请使用 snowflake.snowpark.functions 模块中的等效函数。
下面的示例调用 functions 模块中的 upper 函数(与系统定义的 UPPER 函数等效),以使用大写字母形式返回 sample_product_data 表中 name 列中的值:
如果函数模块中没有系统定义的 SQL 函数,则可以使用以下方法之一:
使用
call_function函数调用系统定义的函数。使用
function函数,创建可用于调用系统定义的函数的一个函数对象。
call_function 和 function 在 snowflake.snowpark.functions 模块中定义。
对于 call_function,将系统定义的函数的名称作为第一个实参传递。如果需要将列的值传递给系统定义的函数,请定义 Column 对象,并将其作为额外的实参传递给 call_function 函数。
下面的示例调用系统定义的函数 RADIANS,并传入来自 col1 列的值:
call_function 函数返回一个 Column,可将其传递给 DataFrame 转换方法 <label-snowpark_python_dataframe_transform>`(例如 :code:`filter、select 等)。
对于 function,传递系统定义的函数的名称,并使用返回的函数对象调用系统定义的函数。例如:
调用用户定义的函数 (UDFs)¶
要调用您 按名称注册 的 UDFs,以及您通过执行 CREATE FUNCTION 创建的 UDFs,请使用 snowflake.snowpark.functions 模块中的 call_udf 函数。将 UDF 的名称作为第一个实参传递,将任何 UDF 参数作为额外的实参传递。
下面的示例调用 UDF 函数 minus_one,并传入来自 col1 和 col2 列的值。该示例将来自 minus_one 的返回值传递给 DataFrame 的 select 方法。
调用用户定义的表函数 (UDTFs)¶
要调用您按名称注册的 UDTFs,以及您通过执行 CREATE FUNCTION 创建的 UDTFs,请使用下列函数之一。两者都返回表示延迟计算的关系数据集的 DataFrame。
请注意,您还可以使用它们来调用其他表函数,包括 系统定义的表函数。
有关注册 UDTF 的更多信息,请参阅 注册 UDTF。
若要在不指定横向联接的情况下调用 UDTF,请调用
snowflake.snowpark.Session类中的table_function函数。有关函数参考和示例,请参阅 Session.table_function。
以下示例中的代码使用
table_function调用向udtf函数注册的generator_udtf函数。若要调用您的调用指定了横向联接的 UDTF,请使用
snowflake.snowpark.DataFrame类中的join_table_function函数。横向联接 UDTF 时,可指定 PARTITION BY 和 ORDER BY 子句。
有关函数参考和示例,请参阅 DataFrame.join_table_function。
以下示例中的代码执行横向联接,并指定:code:
partition_by和order_by参数。此示例中的代码首先调用snowflake.snowpark.functions.table_function函数,以创建一个表示系统定义的SPLIT_TO_TABLE函数的函数对象。join_table_function随后调用的就是这个函数对象。有关
snowflake.snowpark.functions.table_function函数参考,请参阅 table_function。有关SPLIT_TO_TABLE函数参考,请参阅 SPLIT_TO_TABLE。
调用存储过程¶
若要调用存储过程,请使用 Session 类的 call 方法。