全部产品
Search
文档中心

云原生大数据计算服务 MaxCompute:FUNCTION

更新时间:Sep 04, 2023

SQL语言定义函数作为一种用户自定义函数(UDF),弥补了MaxCompute只能用Java或Python创建UDF的不足,还扩展了UDF入参的参数类型,可支持函数类型的入参参数,提升表达业务逻辑的灵活性。SQL UDF支持永久UDF和临时UDF,本文为您介绍通过FUNCTION命令创建的临时SQL UDF详情。

注意事项

  • 使用SQL定义UDF时,您需要使用SQL脚本模式进行操作,普通SQL编辑模式可能会发生定义报错的问题。

    说明

    MaxCompute的SQL脚本模式介绍及使用指导请参见SQL脚本模式

  • MaxCompute支持通过function命令创建SQL UDF,且通过此命令创建的UDF为临时SQL UDF,即创建完成后不会存入MaxCompute的Meta系统后(即无法在MaxCompute的函数列表中查询到此UDF),后续仅支持在当前SQL脚本中调用此临时UDF,其他环境中无法直接调用此UDF。

    说明

    创建永久SQL UDF的详情请参见CREATE SQL FUNCTION

  • 使用SQL定义UDF时,UDF入参的参数类型需为MaxCompute支持的数据类型,支持的数据类型请参见2.0数据类型版本;在UDF创建完成后,在调用SQL UDF时,请确保调用时的入参与定义UDF的入参参数类型保持一致。

  • 在创建、查询、调用、删除SQL自定义函数时,操作的阿里云账号需要具备Function级别的权限。更多Function权限及授权操作,请参见MaxCompute权限

命令格式

function <function_name>(@<parameter_in1> <datatype>[, @<parameter_in2> <datatype>...]) 
[returns @<parameter_out> <datatype>] 
as [begin] 
<function_expression> 
[end];

参数说明

  • function_name:必填。新建的SQL语言定义函数的名称。函数名称需要唯一,同名函数只能注册一次,且不能与系统内建函数同名。您可以通过LIST FUNCTIONS命令查看项目下的全部函数,来检查是否有同名函数。

  • parameter_in:必填。函数的输入参数。入参支持函数类型参数(包括匿名函数)。入参为函数类型的示例详情请参见SQL UDF示例:入参为函数,匿名函数类型的入参示例详情请参见创建SQL UDF示例:入参为匿名函数

  • datatype:必填。定义函数的输入参数的数据类型,支持的数据类型请参见2.0数据类型版本

  • returns:可选。定义UDF的返回值变量。如果不指定,默认返回function_name的同名变量。

  • parameter_out:必填。定义UDF的返回参数。

  • function_expression:必填。定义UDF的表达式(实现逻辑)。

使用示例

function my_add(@a BIGINT) as @a + 1;

相关命令

  • CREATE SQL FUNCTION:创建永久SQL UDF并存入Meta系统后,所有的查询操作都可以调用该函数。

  • DESC FUNCTION:通过FUNCTION命令创建的临时SQL UDF无法通过DESC FUNCTION来查看,DESC FUNCTION可以查看MaxCompute项目中永久存储的自定义函数的信息,包含函数名称、所有者、创建时间、类名和资源列表信息。

  • DROP FUNCTION:在MaxCompute项目中注销已注册的自定义函数。

  • SELECT FUNCTION:调用SQL UDF,临时SQL UDF仅支持在同脚本中调用,其他查询环境无法调用临时SQL UDF。