数据服务后置UDF开发及应用

适用模块

数据服务,UDF Studio

具体说明

通过对数据服务创建的API添加后置UDF,将原始返回结果进行函数处理,如脱敏,加密等;

使用示例

##### 依赖配置
对应build.gradle文件依赖:  

dependencies {
    //  eds-udf.jar 可通过创建api时,启用后置udf--上传jar包页面下载  
    compileOnly files("${rootProject.projectDir}/libs/eds-udf.jar")
}

DEMO-数据服务后置UDF - 图1

##### 代码示例
package org.demo;

import com.netease.hz.bdms.eds.udf.processing.ProcessingApi;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PostUdfDemo implements ProcessingApi {
    public List<Map<String,Object>> process(HashMap<String, Object> parameter, List<Map<String,Object>> data) {

        List<Map<String,Object>> apiResut = new ArrayList<>();

        // 遍历原始数据处理逻辑
        for(Map<String, Object> row: data) {
            Map<String, Object> procRow = new HashMap<>(row);
            // 如需针对多个字段进行处理,需在这里自行完善逻辑,样例以对phone_number字段名进行脱敏为例
            if(row.containsKey("phone_number")) {
                String phoneNumber = (String) row.get("phone_number");
                // 脱敏处理逻辑:将手机号的中间四位替换为星号
                if (phoneNumber.length() >= 7) {
                    String maskedPhoneNumber = phoneNumber.substring(0, 3) + "****" + phoneNumber.substring(7);
                    procRow.put("phone_number", maskedPhoneNumber);
                }
            }
            apiResut.add(procRow);
        }

        return apiResut;
    }
}

数据服务实践
```

将Jar包注册至UDFStudio后,即可在数据服务中直接引用

DEMO-数据服务后置UDF - 图2

测试验证可发现字段名为phone_number内容已经被脱敏显示;

DEMO-数据服务后置UDF - 图3


作者:Semon