实际工作场景中数据数初步清洗逻辑使用数据过滤系列-Aviator表达式过滤主要讲解实现主页,配置数据过滤规则有什么用怎么用

本文主要是介绍实际工作场景中数据数初步清洗逻辑使用数据过滤系列-Aviator表达式过滤主要讲解实现主页,配置数据过滤规则有什么用怎么用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

目录

实际场景的一个规则

第一个案例,正则相关

第二个案例不等于相关

第三个案例同时满足条件A和条件B 同时不满足条件C

第四个案例满足条件A或条件B 同时不满足条件C

过滤整个系列主要讲解了什么

 表达式规则的前期工作,如何实现简单讲解

规则同时满足等于条件A且同时满足等于条件B,对数据进行过滤

规则包含使用分词和JDK自带流式stream处理效率对比

规则满足等于条件A,同时满足包含条件B,规则表达式

规则满足等于条件A【可配置变动的配置参数】,规则表达式

规则满足包含条件A【可配置变动的配置参数】,规则表达式

规则满足入参包含每一个字符串A【可配置变动的配置参数】,规则表达式

规则满足入参满足以条件A为结尾【A可配置变动的配置参数】,规则表达式

规则满足入参满足以条件A为开头首字符串【A可配置变动的配置参数】,规则表达式

规则满足符合其中一个正则表达式A【A可配置变动的配置参数】,规则表达式

表达式执行过程中需要注意的事项,实际工作中遇到的问题和异常

规则统一封装工具类进行调用,返回匹配结果符合【true】还是不符合【false】

规则不满足正则表达式条件A【A为可配置的正则列表】,表达式实现

规则过滤结果展示,实际工作场景初步清洗数据效果展示

规则其中的一些局限性,不能直接的获取到自定义表达式名称



 

前言:

目前我们业务场景是每分钟可以入库数据60000+数据,这些数据,很多都是毫无价值的数据,那么进一步就需要我们进行数据的清洗,目前在这里我只讲解我们初步的过滤阶段后续的清洗后续课程看时间,等我整理好了有时间了就再来加更!其实可以通诺JDK的自带的方法或者正则表达式进行过滤数据,可是实际的业务需求是可以自配的,也就是说可以动态的进行配置,不断地修改规则,进行满足业务需求。那么在技术实现上,最开始的是使用JDK的过滤开发实现的,效率也还可以,但是随着入库数据的不断增加,业务需要更为复杂的规则进行过滤,java写死的代码就不能满足业务实际的生产过滤需要,所以经过我们几轮的商讨个每个人的采用的技术架构进行效率比较,最后采用了,Aviator表达式过滤,在效率上,灵活性上更为满足实际上的业务需求。所以最后拍板进行选择了Aviator表达式过滤的初步过滤方案。

 

实际场景的一个规则

第一个案例,正则相关

-- 条件 55 标题正则表达式  title not regexp ‘不达标|超标|不符合.*安全标准|不合格|侵权|注销|失联|募集失败|质量黑榜|不能.*(偿还|偿付)|并网|招标|项目.*投运|遭查|获.*资格|终止.*协议|签约.*项目|同业存单|减值.*计提|计提.*减值|发行.*票据|合同.*(公告|公示)|罚单’

这样的是不是java代码也可以进行开发,可是实际上可以变动的话,java就需要重新开发一套逻辑来支持,灵活性太差劲,所以,在这里需要进行观察。此时我自己建立的过滤直接可以配置数据库脚本局可以,还可以配置与或非的关系组合,用起来非常方便!

当然这个作为最简单的案例,我处理配置如下就可以实现:

INSERT INTO `tbm`.`rule_contant` (`id`, `parameter`, `replace_parameter`, `contant_type`, `update_time`, `create_time`, `desc`) VALUES (null, '.*(不达标|超标|不符合.*安全标准|不合格|侵权|注销|失联|募集失败|质量黑榜|不能.*(偿还|偿付)|并网|招标|项目.*投运|遭查|获.*资格|终止.*协议|签约.*项目|同业存单|减值.*计提|计提.*减值|发行.*票据|合同.*(公告|公示)|罚单).*', NULL, 'PATTERNTITLE20201116_1', '2021-01-16 20:01:50', '2021-01-16 23:18:46', '2021-01-16新增;反向过滤;条件 55 标题正则表达式表达式是:patternfunction(\'$TITLE$\',\'#PATTERNTITLE20201116_1#\')');

第二个案例不等于相关


--条件 56 栏目不符合正则表达式  code not in (49940,47216,49935,53128,48314,49596,49934,49943,49931,50381,201942,48326,48429,49008,51139,48380,49829,49944,50903,51123,56112,47450,49940,50904,56123,48423,48493,48494,48510,48518,50020,50378,50379,50526,50722,50723,50725,50729,203566,48429,49596,49935,56112,201942,23348,33492,48316,48411,48495,48504,48507,48508,48512,48513,49603,50021,50022,50534,50726,50904,50905,51040,51059,51081,51097,56115,56118,56129,56194,58125,86141,92686,203563,47020,47073,47216,48494,48659,49943,50379,51139,55872,92686,49571,49572,49573,49574,49575,49576,49577,49578,49579,49580)

这里仅仅作为主页的简单介绍。至于在工作中使用的过滤规则详见下面链接:

第三个案例同时满足条件A和条件B 同时不满足条件C

第四个案例满足条件A或条件B 同时不满足条件C

类似下面的过滤需求。如何配置化实现呢?是不是看到之后有点迷糊?当条件很多,而且要支持动态变化的话,最好的方案就是配置表达式支持只有如此才会满足这样的数据过滤需求场景

过滤整个系列主要讲解了什么

 

  1.  表达式规则的前期工作,如何实现简单讲解

  2. 规则同时满足等于条件A且同时满足等于条件B,对数据进行过滤

  3. 规则包含使用分词和JDK自带流式stream处理效率对比

  4. 规则满足等于条件A,同时满足包含条件B,规则表达式

  5. 规则满足等于条件A【可配置变动的配置参数】,规则表达式

  6. 规则满足包含条件A【可配置变动的配置参数】,规则表达式

  7. 规则满足入参包含每一个字符串A【可配置变动的配置参数】,规则表达式

  8. 规则满足入参满足以条件A为结尾【A可配置变动的配置参数】,规则表达式

  9. 规则满足入参满足以条件A为开头首字符串【A可配置变动的配置参数】,规则表达式

  10. 规则满足符合其中一个正则表达式A【A可配置变动的配置参数】,规则表达式

  11. 表达式执行过程中需要注意的事项,实际工作中遇到的问题和异常

  12. 规则统一封装工具类进行调用,返回匹配结果符合【true】还是不符合【false】

  13. 规则不满足正则表达式条件A【A为可配置的正则列表】,表达式实现

  14. 规则过滤结果展示,实际工作场景初步清洗数据效果展示

  15. 规则其中的一些局限性,不能直接的获取到自定义表达式名称

 

 


  

这篇关于实际工作场景中数据数初步清洗逻辑使用数据过滤系列-Aviator表达式过滤主要讲解实现主页,配置数据过滤规则有什么用怎么用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045869

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti