Java UDFs 简介

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

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

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

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

  • 11.x

  • 17.x(所有账户都可以使用此功能的预览支持。)

备注

如需了解有关 Java UDF 处理程序的限制,请参阅 Java UDF 限制

本主题内容:

Java 处理程序的工作原理

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

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

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

以下是数据流的简化说明:

UDF 数据流

示例

以下示例中的代码使用处理程序方法 TestFunc.echoVarchar 创建一个称为 echo_varchar 的 UDF。Snowflake 会根据 SQL-Java 数据类型映射 中描述的映射将 Java 实参和返回类型与 SQL 相互转换。

create or replace function echo_varchar(x varchar)
returns varchar
language java
called on null input
handler='TestFunc.echoVarchar'
target_path='@~/testfunc.jar'
as
'class TestFunc {
  public static String echoVarchar(String x) {
    return x;
  }
}';
Copy

设计注意事项

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

处理程序编码

从基础知识到详细示例,以下主题描述了如何使用 Java 编写 UDF 处理程序。

  • Java 类定义。 使用 Java 类编写一个 UDF 逻辑。有关 Snowflake 如何与代码交互的更多信息,请参阅 设计类

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

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

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

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

  • 处理程序文件组织。 如果您打算将编译后的处理程序代码打包到 JAR 文件,可使用 整理文件 中的建议来组织和构建代码。

  • 代码示例 有关使用 Java 编写的一系列处理程序示例,请参阅 Java UDF 处理程序示例

语言: 中文