新建用户自定义函数

离线计算函数用于管理离线计算任务代码开发过程中用到的SQL函数,包括计算引擎源常用且系统默认支持的函数和用户自定义函数,前者不支持编辑操作。本文为您介绍如何新建用户自定义函数。

前提条件

完成资源的创建,详情请参见上传资源及引用

背景信息

  • Dataphin系统根据函数类型定义了函数的目录,帮助您更好地管理函数。

  • 不同计算引擎所支持创建的函数类型不同。

    计算引擎类型

    支持函数

    离线引擎

    MaxCompute

    MAXC函数

    Hologres

    不支持自定义函数

    Hadoop

    Hadoop函数(Hive函数)、Impala函数

    TDH Inceptor

    不支持自定义函数

    ADB for PostgreSQL

    ADB函数

    SelectDB

    不支持自定义函数

    Doris

    不支持自定义函数

    实时引擎

    Alibaba Blink

    FLINK函数

    Ververica Flink

    FLINK函数

    开源Flink

    FLINK函数

  • MaxCompute外部项目不支持创建自定义函数。

操作步骤

  1. Dataphin首页的顶部菜单栏中,选择研发 > 数据研发

  2. 在顶部菜单栏选择项目(Dev-Prod模式需要选择环境)。

  3. 在左侧导航栏中选择数据处理 > 函数

  4. 在右侧函数列表中单击image图标,选择目标类型函数。

  5. 新建函数对话框中,配置以下参数。

    参数

    描述

    名称

    填写函数名称。名称支持英文、数字、下划线(_),且首字符必须为英文字母。

    说明

    同一项目中,Impala函数和Hive函数的名称不得与该项目内任意目录中的自定义函数同名。

    选择资源

    选择资源文件。下拉列表中提供的是匹配当前项目的资源名称。 

    说明
    • 仅支持选择JAR格式的文件进行定义函数。

    • 选择多个资源时,仅限选择同一种资源类型。

    • 如果您还没有资源,则需创建资源。具体操作,请参见上传资源及引用

    编程语言

    Impala支持C++Java定义的函数。若您需定义Impala函数,请根据您的资源类型选择对应的编程语言。

    类名

    填写类名。针对计算类型中的资源,提取资源中类的内容,例如test_udf.UDFGETSrcId

    类型

    选择类型,下拉列表中可供选择的类型包含窗口统计数值字符串时间ip地址相关函数URL编译码业务其他

    注册函数

    若您需定义Impala函数且资源的编程语言为C++,请输入创建Impala函数的语句。注册函数需要满足以下的语法,Location语句后端兼容使用资源文件进行替代。

    • 创建c++标量函数

      CREATE FUNCTION [IF NOT EXISTS] [db_name.]function_name([arg_type[, arg_type...])
        RETURNS return_type
        SYMBOL='symbol_name'
    • 创建C++聚合函数

      CREATE [AGGREGATE] FUNCTION [IF NOT EXISTS] [db_name.]function_name([arg_type[, arg_type...])
        RETURNS return_type
        [INTERMEDIATE type_spec]
        [INIT_FN='function']
        UPDATE_FN='function'
        MERGE_FN='function'
        [PREPARE_FN='function']
        [CLOSEFN='function']
        [SERIALIZE_FN='function']
        [FINALIZE_FN='function']

    更多信息,请参见用户定义函数 (UDF)

    命令格式

    填写命令格式。命令格式即函数引用格式,例如:bigintweekday (datetime date)

    使用文档

    填写函数使用描述,例如:

    select   
    get_week_date("20170810",0,2),--获取810日,本周周二日期。
    from  cndata.dual

    选择目录

    系统默认为当前函数类型的目录。如果您需要修改,则系统仅支持修改该函数类型目录下的子目录。

    例如,您新建的是MAXC函数,则系统自动为您选中MAXC函数为目录。如果您需要修改目录, 则系统仅支持选择MAXC函数目录下的子目录。

  6. 信息配置完成后单击提交,在弹出的对话框中填写提交备注,完成后单击确认并提交

    说明
    • 如果自定义函数引用的资源有更新,则需重新提交自定义函数,这样注册至计算引擎的自定义函数才会更新。

    • 提交成功后,相关引用任务自动引用新版对象,可能导致任务不可用,请及时检查。

    您可以通过即席查询(请参见查询并下载数据),编写SQL代码(SQL代码中引用该函数)验证函数是否符合预期效果。SQL查询语句示例如下。 

    select   
    get_week_date("20170810",0,2),--获取810日本周周二日期。
    from  cndata.dual

后续步骤

  • 如果项目的模式为Dev-Prod,则您需要发布资源至生产环境。具体操作,请参见管理发布任务

  • 如果您的开发模式是Basic模式,则提交成功后,即可使用自定义的函数进行计算任务开发。更多信息,请参见数据开发概述