如果表格存储中的数据具有特殊结构(例如需要解析特定的JSON字符串),可以使用用户自定义函数(UDF,User Defined Function)对每一行数据执行自定义处理逻辑。
工作原理
UDF 运行在MaxCompute侧,而非表格存储侧。MaxCompute 从表格存储读取行数据,将数据传入 UDF,并将处理结果返回给 SQL 查询。开发流程为:用 Java 编写 UDF 逻辑,打包为 JAR 文件,注册到 MaxCompute,然后在 SQL 语句中调用。
前提条件
已创建表格存储实例和数据表
已创建MaxCompute项目,且项目具有访问该数据表的权限
-
本机已安装 IntelliJ IDEA
操作步骤
-
在 IntelliJ 中安装 MaxCompute-Java/MaxCompute-Studio 插件。具体操作,请参见安装MaxCompute Studio。
插件安装完成后,即可开始开发 UDF。
下图为一个简单的 UDF 定义示例,功能为串接两个字符串。MaxCompute 支持更复杂的 UDF,包括自定义窗口执行逻辑等。更多信息,请参见开发UDF。

打包并将 JAR 文件上传至 MaxCompute。具体操作,请参见打包、上传及注册。
-
运行 bin/odpscmd.bat,在 SQL 查询中调用 UDF。
以下示例从
test_table中取出 1 行数据,将name列两次传入 UDF,并将串接结果以udf_test返回。将cloud_metric_extract_md5替换为实际注册的函数名:-- 选出 1 行数据,将 name/name 传入 UDF,返回两个字符串的串接结果。 select cloud_metric_extract_md5(name, name) as udf_test from test_table limit 1;返回结果如下:

-
该文章对您有帮助吗?