离线计算函数用于管理离线计算任务代码开发过程中用到的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外部项目不支持创建自定义函数。
操作步骤
在Dataphin首页的顶部菜单栏中,选择研发 > 数据研发。
在顶部菜单栏选择项目(Dev-Prod模式需要选择环境)。
在左侧导航栏中选择数据处理 > 函数。
在右侧函数列表中单击
图标,选择目标类型函数。
在新建函数对话框中,配置以下参数。
参数
描述
名称
填写函数名称。名称支持英文、数字、下划线(_),且首字符必须为英文字母。
说明同一项目中,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),--获取8月10日,本周周二日期。 from cndata.dual
选择目录
系统默认为当前函数类型的目录。如果您需要修改,则系统仅支持修改该函数类型目录下的子目录。
例如,您新建的是MAXC函数,则系统自动为您选中MAXC函数为目录。如果您需要修改目录, 则系统仅支持选择MAXC函数目录下的子目录。
信息配置完成后单击提交,在弹出的对话框中填写提交备注,完成后单击确认并提交。
说明如果自定义函数引用的资源有更新,则需重新提交自定义函数,这样注册至计算引擎的自定义函数才会更新。
提交成功后,相关引用任务自动引用新版对象,可能导致任务不可用,请及时检查。
您可以通过即席查询(请参见查询并下载数据),编写SQL代码(SQL代码中引用该函数)验证函数是否符合预期效果。SQL查询语句示例如下。
select get_week_date("20170810",0,2),--获取8月10日本周周二日期。 from cndata.dual