一、开发环境
ETL 版本:DMETL V4.0.2.93.20200610
开发环境:JDK8
数据库版本:DM7
开发工具:IDEA
二、使用背景
项目中采集目录已制定数据标准,为避免因数据标准频繁变更导致数据库采集目录表结构反复修改,特在各采集目录中设计 CLOB 类型大字段,用于存储该目录扩展字段的 JSON 格式数据信息,示例如下:
{
"KZ1":"11",
"KZ2":"22"
}
上述示例中,KZ1、KZ2 为扩展的数据标准字段名,扩展字段信息以 JSON 格式存储于该大字段中。
后续因数据共享业务需求,需搭建共享库并将大字段中的扩展字段拆分后单独存储。项目选用 DMETL 作为数据同步工具,通过配置转换规则实现数据向共享库的同步,但 ETL 现有数据清洗转换规则无法满足 JSON 格式数据拆分为多个扩展字段的需求,因此需对 JSON 格式清洗转换规则进行二次开发,以适配业务场景。
三、开发步骤
步骤 1:编写并替换 JSONInputRuleBean 类文件
1.编写 JSONInputRuleBean 类,代码实现如下:
2.将编译后的JSONInputRuleBean.class文件,替换至 ETL 安装目录下common文件夹中com.dameng.etl.api_4.0.0.jar包的com/dameng/etl/api/model/transform路径下,替换对应原文件,
如下图所示:
步骤 2:开发client JSONInput2 Jar 包并部署
步骤 3:开发server端 JSONInput2 Jar 包并部署
步骤 4:重启服务并测试规则有效性
1.重启 DMETL 服务,使开发的插件与规则生效;
2.配置输出字段:在输出中添加扩展字段,示例中HJ_DEFINE字段存储的 JSON 内容为:
{
"KZ1":"11",
"KZ2":"55"
},
同时在输出配置中新增扩展字段KZ1和KZ2,用于接收 JSON 拆分后的数据;如下图所示:
3. 选择清洗规则:在数据清洗转换规则配置中,选择json input extend分类下的JSON INPUT2规则,并全选需要处理的字段,如下图所示;
4. 预览验证结果:点击预览输出,若HJ_DEFINE字段中的 JSON 格式扩展字段信息,能准确拆分并映射到对应的KZ1、KZ2扩展字段列中,即表示该 JSON 格式清洗转换规则开发生效。
生效验证示例:如下图所示:预览结果中KZ1列显示值为 11,KZ2列显示值为 55,与 JSON 中存储的内容一致,规则生效。
文章
阅读量
获赞
