跳到主要内容

自定义函数

自定义函数

使用场景:在数据开发中需要实现加解密等复杂处理,SQL 语法若不支持,可通过 Java 自定义函数处理。

使用角色:数据开发人员。

功能描述:数据开发人员通过上传 jar 包为自定义函数,通过引用函数实现数据加解密以及复杂的数据聚合等加工处理。

内置函数

函数名称函数用途
LUBAN_MD5_ENCRYPTmd5加密函数
LUBAN_SM4_ENCRYPTsm4加密函数
LUBAN_SM4_DECRYPTsm4解密函数
LUBAN_AES128_ENCRYPTaes128加密函数
LUBAN_AES128_DECRYPTaes128解密函数

自定义函数

进入数据开发 > 批量数据 > 自定义函数界面,点击界面上方的 “新建自定义函数” 按钮,在新建自定义函数弹窗中上传文件后点击右下角 “保存”,待系统校验通过后即可按 tab 页生成多条函数记录至函数列表。
新建自定义函数

注意
  • 上传后缀为 .jar 的自定义函数文件后,系统会自动解析 jar 包中所有函数的名称,并显示在弹窗界面下方;
  • 新建函数名称不允许与已有自定义函数同名;
  • 文件上传仅支持 jar 类型资源文件上传(只支持UDF),jar文件大小最大支持 1G;
  • 一个 jar 中可包含多个函数;
  • 相同的 jar 包只能上传一次,系统会根据 jar 包名字判断两个 jar 包是否为同一个。

新建自定义函数

  • 解析项说明
    • 函数名称:系统自动解析jar包中所有函数的名称,并以函数名称为tab页标题,分开展示,函数名称不支持修改;
    • 参数说明:用于说明函数的参数情况,系统自动解析参数名称、参数类型,仅支持修改参数类型;
    • 返回类型:自动解析返回类型,可下拉选择参数类型,参数名称不支持修改;
    • 函数用途:非必填,用于说明函数用途,手动输入。
  • 新建函数须知
    • 自定义函数所在的包需要为“com.hexadb.luban.custom.function”的子包;
    • 自定义函数的入参和返回类型需要为String或者java基本类型以及包装类;
    • 自定义函数需要为javapublic static方法;
    • 自定义函数支持的JDK版本为JDK1.8

如果自定义函数的jar包中有依赖第三方的jar,请在pom.xml中添加如下内容将第三方jar包中的class一起进行打包,上传后缀名为jar-with-dependenciesjar

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>assemble-all</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
注意

删除操作仅删除列表中的函数记录,不会删除对应 jar,除非该 jar 包关联的所有函数均被删除,则在删除最后一条关联函数时删除 jar 包;被加工作业引用的函数删除后,加工作业会失败报错;内置函数不允许修改、删除文件和删除。

函数使用方式

平台支持在数据开发 > 批量数据 > 数据加工中的“SQL加工”节点、数据分析 > 数据探查,两处使用自定义函数或基础内置函数。 新建自定义函数

以内置加解密函数使用为例:可在SQL语句中引用加密函数先完成加密,再使用解密函数进行解密,具体引用语句示例如下。 新建自定义函数

支持函数白名单

分类支持函数
字符串函数to_char()、 position()、 string_agg()、concat()、 split_part()、 char_length() 、lower() 、upper()、 substring() 、REPLACE trim()
数学函数abs()、 sqrt()、 round()、 ceil() 或 ceiling()、 floor()、 pow() 或 power()、 exp() 、log()
日期和时间函数current_date、 current_time、 now()、 extract()、 age()
聚合查询sum、avg、max、min、count
条件函数case 表达式
系统函数version()
其他函数unnest()、 array_to_string()、 string_to_array()、 coalesce()