Python UDFs 简介

您可以为 Python 中的用户定义函数 (UDF) 编写处理程序。本部分中的主题描述如何设计和编写 Python 处理程序。您还会发现一些例子。

有关 UDFs 的介绍,包括可用于编写 UDF 处理程序的语言列表,请参阅 用户定义函数概述

有了处理程序后,就可以用 SQL 创建 UDF。有关使用 SQL 创建或调用 UDF 的信息,请参阅 创建 UDF,或 调用 UDF

Snowflake 目前支持使用以下版本的 Python 编写 UDFs :

  • 3.8

  • 3.9

  • 3.10

  • 3.11

备注

有关 Python UDF 处理程序的限制,请参阅 Python UDF 限制

本主题内容:

Python 处理程序的运作机制

当用户调用 UDF 时,用户将 UDF 的名称和实参传递给 Snowflake。Snowflake 调用相关处理程序代码(如有实参则使用实参)来执行 UDF 的逻辑。然后,处理程序方法将输出返回给 Snowflake,Snowflake 再将其传回给客户端。

对于传递给 UDF 的每行, UDF 返回标量(即单个)值,或者如果定义为表函数,则返回一组行。

Python UDFs 可以包含新代码和对现有包的调用,从而为您提供灵活性和代码重用能力。例如,如果您已有 Python 数据分析代码,那么可以将其合并到 Python UDF 处理程序中。

示例

以下示例中的代码使用处理程序方法 addone_py 创建一个称为 addone 的 UDF。根据 SQL-Python 数据类型映射 中描述的映射,Python 实参和返回类型通过 Snowflake 与 SQL 相互转换。

create or replace function addone(i int)
returns int
language python
runtime_version = '3.8'
handler = 'addone_py'
as
$$
def addone_py(i):
  return i+1
$$;
Copy

设计注意事项

为设计有用的处理程序,请记住以下几点。

处理程序编码

以下主题描述了如何使用 Python 编写 UDF 处理程序,涵盖从基础知识到详尽示例的各类内容。

  • Python 模块定义。 在 Python 模块中编写一个 UDF 的逻辑。有关 Snowflake 如何与代码交互的更多信息,请参阅 设计模块

  • 错误处理。 有关 Snowflake 如何显示处理程序生成的错误的信息,请参阅 处理错误

  • 表格返回值。 您可以通过 UDF 返回表格值和标量(单个)值。有关如何编写返回表格值的处理程序的信息,请参阅 用 Python 编写 UDTF

  • 日志记录和事件跟踪。 有关在处理程序代码执行时获取日志和跟踪数据的信息,请参阅 日志记录和跟踪概述

  • 依赖项。您可以将依赖项上传到暂存区,使其在运行时可用于您的代码。有关详细信息,请参阅 为代码提供依赖项

  • 代码示例 有关 Python 中的一系列处理程序示例,请参阅 Python UDF 处理程序示例

语言: 中文