使用RestCloud ETL强大的自定义规则实现自定义数据处理算法

实时数据处理规则有什么作用?
在大数据中的实时数据采集、ETL批量数据传输过程中很多数据处理过程以及数据质量都希望实时进行处理和检测并把不符合要求的脏数据过滤掉或者进行实时的数据质量告警等。
在数据仓库建设过程中,每家企业的数据处理过程中肯定会有一些自身的数据处理特点如学号的处理、车牌号的处理、身份证号码的处理、SKU编码的处理、订单号的处理等等,各行各业都有自已的数据处理和运算方式,而ETL平台本身只是内置了一些通用的数据处理规则,企业所需要的这些个性化的运算规则就可以通过ETL的自定义规则来实现了。
怎么自定义数据处理规则?
首先进入ETL平台的一个应用,只有应用中才可以新增自定义规则,因为规则必须属于某一个应用。

注意:新增一个规则的分类才可以新增自定义规则

进入应用配置中新增一个规则分类

有了分类后再进入到自定义规则中就可以新增规则了,点击新增规则后给规则一个名称如:发动机号校验规则、订单号合法性校验规则等等,class path不用填系统会自动生成。
自定义数据处理规则的注意事项
规则新增成功后就可以给规则进行代码逻辑的编写了

系统会自动生成一个规则运算的代码模板出来,只需要根据模板中的提示进行逻辑修改即可

平台运算规则使用的是标准的Java语法,不是JavaScript之类的,所以不用担心运算规则的执行效率,经过我们测试处理100W的数据使用Java规则只需要几秒钟即可完成,而如果用JavaScript语法的规则需要几分钟才能完成,所以RestCloud ETL在性能上是很有优势的。
规则代码编写完成后可以点击编译并保存按扭即可,如果提示成功则表示代码没有问题,如果提示失败可以根据提示信息进行代码修改,如果在Web IDE中编辑不是很方便也可以把代码copy到idea/eclipse中进行编辑,编辑完成后再copy进来即可。
使用参数提升数据处理规则的复用率
如果规则都是固定算法不需要在系统执行时传入参数就不需要定义参数,但是有时我们为了能提升规则的复用性就必须得用到规则参数的功能了如:自定义一个格式化时间的规则,而格式化时间会有: yyyy-MM-dd、yyyy年MM月dd日、yyyy-MM-dd HH:mm:ss等等,根本不知道用户想格式化成什么样,光是一个时间格式如果不用参数我们就得定义一大堆规则才可以实现上面的功能,最好的方式是时间的格式是由绑定规则时指定的一个参数,这样我们在开发规则的时修只需要一个规则即可完成。

在新建规则时可以指定一个规则参数,这样在用户选择这个规则时就会提醒用户设定参数

这样用户可以在绑定规则时指定一个参数,这个参数会传入到规则的方法中

系统通过一个{参数id:参数值}的json传入,我们转为map对象后再获取参数值即可在代码中使用。
怎么使用规则进行数据质量的检查或过滤
规则定义好后我们就可以在ETL的流程中使用这些规则来进行数据质量的检查,数据清洗过滤等操作,如下面这个流程就可以把不符合要求的电话号码的用户给过滤掉同时发送告警通知给用户

自定义规则调用第三方jar包
规则中可以使用import 引入自已开发的jar包或者第三方jar包的class进入,这样就可以利用第三方jar包中的运算能力(如:spark、sm4加密算法、逻辑回归算法等)来实现很多复杂业务的处理和数据运算。
规则中可以执行SQL吗?
规则中可以很方便的执行SQL语句,系统已经封装了ETLRdbUtil这样工具类(还有其他很多数据库的工具类如:Redis,MongoDB,ES,Kafka等)如下代码即可执行SQL并返回数据
String sql=”select * from tablename where id<10”;
List docs=ETLRdbUtil.listDocs(ETLRdbUtil.getConnection("数据源id"), sql);
for(Document doc:docs) {
PrintUtil.o(doc.getString("userId"));
}
ETLRdbUtil工具类有很多方便访问数据库的工具,一般只需要几行代码就能读取、写入、修改数据,后面我们会专门介绍ETLRdbUtil工具类的使用。

使用RestCloud ETL强大的自定义规则实现自定义数据处理算法的更多相关文章
- jQquery.validate自定义规则的使用案例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Dotfuscator自定义规则中的元素选择
Dotfuscator是专业的.NET程序代码保护软件.是支持规则自定义的,你可以对重命名.程序控制流.字符串加密等等功能自定义规则.在进行规则自定义过程中,可以通过元素的不同选择,满足自己的程序需要 ...
- js将对象数组按照自定义规则排序
javascript对一个对象数组进行自定义规则排序,对象中有两个字段. 按照对象中一个字段a的值从小到大规则排序, 效果如下: 排序前: [0]:a=9,b=3 [1]:a=33,b=7 [2]:a ...
- .NetCore实践爬虫系统(二)自定义规则
回顾 上篇文章NetCore实践爬虫系统(一)解析网页内容 我们讲了利用HtmlAgilityPack,输入XPath路径,识别网页节点,获取我们需要的内容.评论中也得到了大家的一些支持与建议.下面继 ...
- vee-validate 中文配置报错及自定义规则 报错.updateDictionary/.addlocale is not a function
原因由于vee-validate版本更新的问题导致的. 1. 原因分析: a 新版vee-validate的语言配置方法变化了, Validator.localize('zh_CN', zh_CN) ...
- java编程排序之内置引用类型的排序规则实现,和自定义规则实现+冒泡排序运用
第一种排序:[冒泡排序]基本数据类型的排序. [1]最简易的冒泡排序.效率低.因为比较的次数和趟数最多. /** * 最原始的冒泡排序. * 效率低. * 因为趟数和次数最多.都是按最大化的循环次数进 ...
- ss user-rule自定义规则并硬连接到OneDrive进行自动同步
最近又换回Edge没了Switchy Omega用,仅仅使用GFWList感觉不够用,一些境内没服务器的网站直连还是挺慢的,于是就研究了一下PAC自定义规则. 简单说,平时用的规则就只有三种: 对于没 ...
- Nice Jquery Validator 自定义规则
规则定义方式 (1). 正则 适用于使用单个正则能搞定的验证. // 使用数组包裹正则和错误消息,规则不通过时提示该消息 mobile: [/^1[3458]\d{9}$/, '请检查手机号格式'] ...
- SonarQube 自定义规则开发
SonarQube 自定义规则开发 满足一些特定需求的时候,需要自己开发代码规则. 环境 和前文的演示环境一致. 步骤 开发步骤见 Writing Custom Java Rules 101,这是官方 ...
- 微服务实战系列(八)-网关springcloud gateway自定义规则
1. 场景描述 先说明下项目中使用的网关是:springcloud gateway, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...
随机推荐
- Sentinel源码—5.FlowSlot借鉴Guava的限流算法
大纲 1.Guava提供的RateLimiter限流使用示例 2.Guava提供的RateLimiter简介与设计 3.继承RateLimiter的SmoothBursty源码 4.继承RateLim ...
- Windows下将QT打包为可执行文件(exe)的完整流程,包含第三方库。
打包我的 Qt/C++ 视觉应用:从依赖部署到单文件 EXE 的踩坑之旅 一.前言 最近完成了一个基于 Qt/C++ 的桌面视觉应用项目(proj_ai_vision_app).这个项目功能还挺复杂, ...
- .net6 api添加接口注释
参照: .NET 6 Swagger添加xml注释 - 凡尘一叶~ - 博客园 (cnblogs.com)[这个比较准] .net core的Swagger接口文档使用教程(一):Swashbuckl ...
- 通用型产品发布解决方案(SpringBoot+SpringCloud+Spring CloudAlibaba+Vue+ElementUI+MyBatis-Plus+MySQL+Git+Maven)03
通用型产品发布解决方案(基于分布式微服务技术栈:SpringBoot+SpringCloud+Spring CloudAlibaba+Vue+ElementUI+MyBatis-Plus+MySQL+ ...
- Spring编程式事务控制
目录 Spring编程式事务控制 代码实现 测试 Spring编程式事务控制 实际中很少使用 代码实现 pom.xml <?xml version="1.0" encodin ...
- WPF在Visual studio中打包,发布注意事项
右键项目,发布的时候,需要选择独立,否则依赖库的话,有可能客户端没有.net core或.net framework,那么就会报错,提醒对方下载. 今天发现,VS 2022,直接Debug运行后,Re ...
- TGCTF-misc全解
TGCTF-misc方向wp next is the end 下载压缩包,拉出第一层文件夹,直接嵌套读取内容找flag import os def is_last_level_dir(director ...
- 用QT、QImage来制作简单图像处理工具
用QT.QImage来制作简单图像处理工具 源码地址: https://github.com/dependon/simple-image-filter 下载地址(windows版本) github 下 ...
- C++用Mutex实现读写锁
近期答辩完成了,想回头看看之前没做过的2PL. 实现2PL有4种方式: 死锁检测.本篇是为了做这个而实现的,做这个事情的原因是c++标准库的shared_mutex无法从外界告知获取锁失败. 如果需要 ...
- JDBC连接数据库增删改查实例
查询所有 dao层代码: package example; import java.sql.Connection; import java.sql.DriverManager; import java ...