文档

新建用户自定义函数

更新时间:

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

前提条件

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

背景信息

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

操作步骤

  1. 请参见数据开发入口,进入数据开发页面。

  2. 按照下图操作指引,进入新建函数对话框。

    image..png系统支持新建的函数类型,根据Dataphin系统的计算引擎不同而不同:

    计算引擎类型

    支持函数

    离线引擎

    MaxCompute

    MAXC函数

    Hologres

    不支持自定义函数

    Hadoop

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

    TDH Inceptor

    不支持自定义函数

    ADB for PostgreSQL

    ADB函数

    实时引擎

    Alibaba Blink

    FLINK函数

    Ververica Flink

    FLINK函数

    开源Flink

    FLINK函数

    说明

    当前项目如果绑定的为MaxCompute外部项目,则不支持创建自定义函数。

  3. 新建函数对话框,配置参数。

    参数

    描述

    名称

    填写名称。名称由字母,数字,下划线(_)组合组成,且首字符仅限英文字母。

    选择资源

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

    说明
    • 当前,仅支持选择PYTHON、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),--获取8月10日,本周周二日期。
    from  cndata.dual

    选择目录

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

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

  4. 按照下图操作指引,提交用户自定义函数。

    image..png

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

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

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

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

后续步骤

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

管理发布任务

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