注册
达梦 ETL JSON 格式清洗转换插件二次开发经验分享
培训园地/ 文章详情 /

达梦 ETL JSON 格式清洗转换插件二次开发经验分享

会飞的水 2026/03/18 218 0 0

一、开发环境
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 类,代码实现如下:
image.png
2.将编译后的JSONInputRuleBean.class文件,替换至 ETL 安装目录下common文件夹中com.dameng.etl.api_4.0.0.jar包的com/dameng/etl/api/model/transform路径下,替换对应原文件,
如下图所示:
image.png

步骤 2:开发client JSONInput2 Jar 包并部署

  1. 开发 client 端 JSONInput2 jar 包程序,完成插件配置与代码开发,核心配置文件plugin.xml内容如下:
    image.png
    2.核心程序类Activator.java代码实现如下:
    image.png
    3.将打包完成的JSONInput2.jar包,放置到 ETL 安装目录client文件夹下的dropins目录中。,如下图所示:
    image.png

步骤 3:开发server端 JSONInput2 Jar 包并部署

  1. 开发 server 端 JSONInput2 jar 包程序,完成插件配置与核心业务代码开发,核心配置文件plugin.xml内容如下:
    image.png
    2.开发核心业务处理类ProcessJSONInput2.java,实现 JSON 格式数据拆分的核心逻辑,基础代码框架如下:
    image.png
  2. 将打包完成的JSONInput2.jar包,放置到 ETL 安装目录server文件夹下的dropins目录中,如下图所示:
    image.png

步骤 4:重启服务并测试规则有效性
1.重启 DMETL 服务,使开发的插件与规则生效;
2.配置输出字段:在输出中添加扩展字段,示例中HJ_DEFINE字段存储的 JSON 内容为:
{
"KZ1":"11",
"KZ2":"55"
},
同时在输出配置中新增扩展字段KZ1和KZ2,用于接收 JSON 拆分后的数据;如下图所示:
image.png
3. 选择清洗规则:在数据清洗转换规则配置中,选择json input extend分类下的JSON INPUT2规则,并全选需要处理的字段,如下图所示;
image.png
4. 预览验证结果:点击预览输出,若HJ_DEFINE字段中的 JSON 格式扩展字段信息,能准确拆分并映射到对应的KZ1、KZ2扩展字段列中,即表示该 JSON 格式清洗转换规则开发生效。

生效验证示例:如下图所示:预览结果中KZ1列显示值为 11,KZ2列显示值为 55,与 JSON 中存储的内容一致,规则生效。
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服