使用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, 因需要给各个网关服务系统提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现:动态加载自定义路 ...
随机推荐
- MCP Server Java 开发框架的体验比较(spring ai mcp 和 solon ai mcp)
目前已知的两个 mcp-server java 应用开发框架(ID类的,封装后体验都比较简洁): spring-ai-mcp,支持 java17 或以上 solon-ai-mcp,支持 java8 或 ...
- Composer的常用命令和关于在哪儿查看composer可用包列表的问题
1.安装: composer的安装就不用多说了,官网下载,一路next 中途貌似要让选择php.exe的所在目录. 2.常用命令: 1).配置/取消国内镜像仓库 /*配置国内镜像*/ composer ...
- nexus私有仓库与maven集成
首先搭建maven 下载maven,并解压,移动到/usr/local/,重命名为 maven-3.5.4 配置环境变量:vim /etc/profileexport MAVEN_HOME=/usr/ ...
- PC端自动化测试实战教程-3-pywinauto 启动PC端应用程序 - 下篇(详细教程)
1.简介 经过上一篇的学习.介绍和了解,pywinauto的强大,不言而喻吧!宏哥讲解和分享的是电脑自带和安装的应用程序.有些小伙伴或者童鞋们已经迫不及待地私信宏哥,如果在电脑中这个应用程序已经启用了 ...
- 【记录】OJ|区间DP|石子合并(环形)
1. 题干 描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出一个算法,计算出将N堆石子 ...
- CentOS安装SFTP
1.创建专用用户组 sudo groupadd sftpgroup # 创建组用于统一管理SFTP用户[1,6](@ref) 2.添加用户并限制Shell sudo useradd -m -d /d ...
- C#之引用局部变量语法(ref local)
ref Particle p = ref _particles[i]; 是 C# 的引用局部变量语法(ref local),它的作用是直接引用数组中某一项的内存地址,而不是创建该元素的副本.这在性能敏 ...
- .NET外挂系列:5. harmony 中补丁参数的有趣玩法(下)
一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来. 参数名 说明 __instance 访问非静态方法的实例(类似 this). __result 获取/修改返回值 ...
- Spring异常处理 bug !!!同一份代码,结果却不一样?
1. 背景 在上周遇到一个spring bug的问题,将其记录一下.简化的代码如下: public void insert() { try { Person person = new Person() ...
- Java中判断某一字符串是否包含数字、字母和中文
在Java中判断某一字符串是否为纯英文.纯数字.英文和数字的组合等时,通常使用正则str.matches匹配,告诉这个字符串是否与给定的正则表达式匹配. 各种字符的unicode编码的范围 ...