详情页标题前

阿里云云原生大数据计算服务 MaxComputeCREATE SQL FUNCTION-云淘科技

详情页1

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

注意事项

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

    说明

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

  • MaxCompute支持通过create sql function命令创建SQL UDF,且通过此命令创建的UDF为永久SQL UDF,即创建完成后会存入MaxCompute的Meta系统后(即可在MaxCompute的函数列表中查询到此UDF),后续所有的查询操作都可以调用该函数。

    说明

    创建临时SQL UDF的详情请参见FUNCTION。

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

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

命令格式

create sql function (@ [, @ ...]) 
[returns @ ] 
as [begin] 
 
[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的表达式(实现逻辑)。

使用示例

  • UDF逻辑简单时,示例如下。

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

    @a + 1为函数实现逻辑,可直接写为表达式,支持内置操作符、内建函数和UDF。

  • UDF逻辑复杂时,可以在定义中使用begin和end来标注UDF表达式的内容范围,在begin和end内可以编写多条语句作为UDF的表达式,示例如下。

    create sql function my_sum(@a BIGINT, @b BIGINT, @c BIGINT) returns @my_sum BIGINT
    as begin 
        @temp := @a + @b;
        @my_sum := @temp + @c;
    end;

    其中

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

    • begin和end内的两行表达式即为SQL UDF的函数实现逻辑。

SQL UDF的输入参数支持为函数,包括内置函数、UDF,相关示例可参见SQL UDF示例:入参为函数、创建SQL UDF示例:入参为匿名函数。

相关命令

  • FUNCTION:如果您不需要把SQL语言定义函数存入MaxCompute的Meta系统,可以使用临时SQL语言定义函数。

  • DESC FUNCTION:查看MaxCompute项目中指定自定义函数的信息,包含函数名称、所有者、创建时间、类名和资源列表信息。

  • LIST FUNCTIONS:查看MaxCompute项目中所有自定义函数的信息。

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

  • SELECT FUNCTION:调用SQL语言定义函数。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157343.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 为什么flink提供的demo代码都执行不了?-云小二-阿里云

    为什么flink提供的demo代码都执行不了?Caused by: org.apache.flink.table.api.TableException: Failed to execute sql at org.apache.flink.table.api.internal.TableEnvironmentImpl.executeQueryOperation…

    阿里云 2023年12月25日
  • 阿里云日志服务SLS分析概述-云淘科技

    日志服务提供分析功能,该功能结合了查询功能和SQL计算功能。本文介绍分析功能的基本语法、使用限制和SQL函数等信息。 重要 如果您要分析日志,则必须将日志采集到Standard Logstore中,且在配置索引时打开对应字段的开启统计开关。更多信息,请参见Logstore类型对比、创建索引。 日志服务默认存在保留字段。如果您要分析保留字段,请参见保留字段。 …

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云ECS云服务器使用弹性供应组API批量创建ECS实例-云淘科技

    在需要大批量创建按量付费实例的场景中,通过API完成创建操作更加高效。其中,使用RunInstances完成该需求较为复杂,本文将推荐您使用交付过程更加方便稳定的CreateAutoProvisioningGroup。 背景信息 在业务需要使用按量付费ECS实例的场景下,RunInstances是使用最频繁的API。RunInstances拥有一次调用能够最…

    阿里云服务器 2023年12月9日
  • 机器学习PAI maxcompute有资源限制,这咋回事?-云小二-阿里云

    机器学习PAI maxcompute有资源限制,我问maxcompute的客服,说按量付费没有资源限制,我已经从一千万数据减到500万,400w,300w到最后100多万才跑出来,就一个线性回归,这咋回事? 以下为热心网友提供的参考意见 应该是试用资源组并行启动的worker数量比较少。因此不能跑大量数据。 ,此回答整理自钉群“机器学习PAI交流群(答疑@值…

    阿里云 2023年12月25日
  • 请问大数据计算MaxCompute建表时怎么给decimal类型的字段设置默认值为0?-云小二-阿里云

    请问大数据计算MaxCompute建表时怎么给decimal类型的字段设置默认值为0?在文档中没有找到 以下为热心网友提供的参考意见 这样。decimal_name DECIMAL(2, 1) not NULL DEFAULT 0.0BD ,此回答整理自钉群“MaxCompute开发者社区2群” 以下为热心网友提供的参考意见 您好,Maxcompute支持d…

    2023年12月24日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。