更新时间:2024-07-24 GMT+08:00

CREATE FUNCTION

语法

CREATE FUNCTION qualified_function_name (

parameter_name parameter_type

[, ...]

)

RETURNS return_type

[ COMMENT function_description ]

[ LANGUAGE [ JAVA ] ]

[ SPECIFIC specificName ]

[ DETERMINISTIC | NOT DETERMINISTIC ]

[ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]

[ SYMBOL class_name ]

[ URI hdfs_path_to_jar ]

描述

通过给定的定义创建一个新的函数。

  • 每一个函数都由其限定函数名称和参数类型列表唯一标识。“qualified_function_name”的格式需要为“catalog.schema.function_name”,函数命名空间(格式为“catalog.schema”)可以自行规划管理,与HetuEngine中的catalog、schema概念无关联;“parameter_type”需要为HetuEngine支持的数据类型。
  • “return_type”需要为HetuEngine支持的数据类型,要与函数的返回实际类型匹配,不做类型强制转换。
  • 可以指定一组特征来修饰函数并指定其行为,每个特征最多只能指定一次,详情请参考表1
    表1 特征说明

    特征

    默认值

    描述

    Language clause

    -

    定义函数的语言。目前支持JAVA语言。
    • JAVA函数:需要提供函数实现的JAR文件,并将JAR文件放入HetuEngine可以读取的HDFS中。

    Deterministic characteristic

    NOT DETERMINISTIC

    函数是否确定性。

    • DETERMINISTIC:如果函数在使用相同的输入集调用时总是返回相同的结果集,则该函数被视为确定性。
    • NOT DETERMINISTIC:如果函数在使用相同的输入集调用时不返回相同的结果集,则该函数将被视为非确定性。

    Null-call clause

    CALLED ON NULL INPUT

    函数的行为。

    • RETURNS NULL ON NULL INPUT:当“NULL”作为函数参数时,返回“NULL”。
    • CALLED ON NULL INPUT:当“NULL”作为函数参数时调用。

    Symbol class_name

    -

    JAVA函数使用,指定函数实现的限定类名。

    Uri hdfs_path_to_jar

    -

    JAVA函数使用,指定函数实现的JAR文件路径。

限制

  • 权限控制仅使用基于用户组方式进行控制,详情如表2
    表2 权限控制

    操作

    权限控制

    CREATE

    不控制权限

    DROP

    只有owner才有权限执行

    SELECT

    不控制权限

    SHOW

    不控制权限

示例

  • 创建一个新的JAVA函数“example.default.add_two”(需要先构建和部署UDF)
    CREATE FUNCTION example.default.add_two (
     num integer
    )
    RETURNS integer
    LANGUAGE JAVA
    DETERMINISTIC
    SYMBOL "com.example.functions.AddTwo"
    URI "hdfs://hacluster/udfs/function-1.0.jar";
    
    --执行函数
    select hetu.default.add_two(2);