当前位置:文档之家› Jess规则引擎在数据质量分析中的应用

Jess规则引擎在数据质量分析中的应用

第9卷第3期杨凌职业技术学院学报V ol.9 No.3 2010年9月Jour nal of Y ang ling V ocatio nal&T echnical Co lleg e Sep.2010* Jess规则引擎在数据质量分析中的应用史 峰(江苏省宿迁市广播电视大学,江苏宿迁223809)摘 要:规则引擎通过将业务规则和开发者的技术决策分离,实现了动态管理和修改业务规则而又不影响软件系统的需求。

Jess是一个基于Java的规则引擎,可以方便地嵌入到Jav a应用程序中。

本文论述了Jess规则引擎的核心组成及基于Jess规则的数据质量分析的工作原理,通过实例对基于SQ L查询、自定义规则和Jess规则进行了对比分析,得出了Jess规则引擎能够有效地对业务规则进行结构化表示和自动完成数据质量分析的结论。

关键词:Jess规则引擎;数据质量分析;事实库;规则库中图分类号:T P311.13;T P311.5 文献标识码:A 文章编号:1671 9131(2010)03 0052 04 The Application of Jess Rule Engine in Data Q uality AnalysisSHI Feng(Suqian Radio&T V U niv ersity,Suqian,Jiang su223809,China)Abstract:T he reg ular eng ine meets the demand o f dy namic manag ement and the r ev isio n o f business r ule,and does not af fect soft war e sy st em as w ell thr ough the separ ation of ser vice rule and ex ploiter's technical decisio n making.Jess is one r eg ular eng ine based on the Java,ma y be inserted co nv eniently into the Java application procedur e.T his art icle elabor ated the co re composition of Jess r egular eng ine and the w or king principle of data qualit y analysis based on the Jess r ule.With case study,w e made a compariso n of self def initio n rule based on SQ L inquiry and Jess rule,the co nclusion is obtained that Jess rule eng ine could car ry on st ruct ur al represent ation f or business rule effectively and t o co mplete the data qualit y analysis auto matically.Key words:Jess rule engine;data quality analysis;fact base;r ule base在现代的企业级项目开发中,商业决策逻辑或业务规则往往是硬编码嵌入在系统各处代码中的。

但是外部市场业务规则是随时可能发生变化的,这样开发人员必须时刻准备修改、更新系统,降低了效率。

在这种背景下,规则引擎应运而生,它通过将业务规则和开发者的技术决策分离,实现了动态管理和修改业务规则而又不影响软件系统的需求。

规则引擎具有广泛的应用领域,同样也适用于数据质量分析和清洗。

Jess是一个基于Java的规则引擎,是流行的CLIPS专家系统的Java实现,可以方便地嵌入到Java应用程序中。

Jess采用产生式规则作为基本的知识表示,其核心由事实库、规则库和推理机组成。

Jess规则引擎的外部输入包括两部分:事实库和规则库。

在数据质量分析应用中,待分析的数据构成了事实库,而所有业务规则构成了规则库。

1 事实库Jess事实模板与数据库关系表定义有很好的对应关系:表1 Jess事实模板与数据库关系表定义的对应事实模板模板名槽名槽类型槽值关系表定义表名字段名字段类型字段值因此可以从待分析的数据库中抽取关系表的定义来构造事实模板,而关系表的每一条记录则对应一个事实。

这样所有待分析的数据构成了事实库。

假设有一个员工信息数据表employee,其字段定义如表2所示。

*收稿日期:2010 04 11作者简介:史峰(1975 ),男,江苏省沭阳县人,讲师,主要从事数据库研究与数字化校园建设。

表2 员工信息数据表emplo yee 定义字段名字段类型说明N ame var char (50)姓名Sex int 性别(1表示男性,0表示女性)Depar tment var char(500)部门Salar yint工资其对应的事实模板定义为:deftemplate employ ee (slo t name string )(slo t sex integer)(slot department string )(slot salary int)。

表中的某条记录:表3 员工信息数据示例N ame Sex D epar tment salar y K evin1ma rketing2000其对应的事实可表示为:(emplo yee (nam e Kev in )(sex 1)(depart m ent m arketing )(salary 2000))。

Jess 规则引擎工作时,所有事实必须常驻于内存中。

而在数据质量分析中,数据通常存储于数据库中,并且数据量也是比较大的,不可能一次性地导入到内存中供Jess 使用。

因此需要在Jess 规则引擎和外部数据库之间提供一个接口,将数据逐步导入到Jess 的工作空间中。

2 规则库业务知识可以用Jess 规则的形式进行表示,从而构成规则库。

比如某个业务规则 普通员工的月工资不超过5000元 ,用Jess 规则表示为 (defr ule dirty -data (employee {salary >5000})=>(co unt 1)) ,其中规则的右边表示当发现一个违反业务规则的记录时采取某种处理办法,如这里的(count 1)表示仅仅统计脏数据的总数。

在定义业务规则的条件时,常常要对属性进行一些函数运算,比如birthday 属性的数据类型为 y yyy-mm -dd 格式的字符串,现在要取出年份信息,Jess 允许用户自定义函数,并能添加到引擎中。

假设定义了函数y ear,它接受 yyy y-mm -dd 的字符串作为参数,返回年份信息。

在Jess 规则中可以这样运用: defrule dirty -data(em ploy ee {(year birthday )<1983})=>(count 1)) ,它表示出生年份小于1983的记录为脏数据,用户还可以定义更多的函数,以实现更复杂的业务规则条件。

同样的,对于Jess 规则 => 右侧的动作,如上面的(co unt 1),用户也可以定义其他函数,如格式化(Form at)、合并(Co mbine)、分割(Divide)等以实现数据清洗。

3 基于Jess 规则的数据质量分析图1是基于Jess 规则的数据质量分析总体结构。

图1 基于Jess 规则的数据质量分析总体结构其工作原理为:首先抽取待分析数据库的数据模式,并自动生成事实模板(一个事实模板可以包含对应数据表的全部或部分字段),用户根据这些事实模板定义业务规则,导入到规则库中,然后抽取部分数据到Jess 的工作空间,生成事实库。

Jess 规则引擎根据规则库中定义的业务规则对工作空间的数据进行过滤分析,当工作空间里的所有数据都分析完后,清空工作空间数据,再从数据库中导入新的数据进行新一轮的分析。

4 数据质量分析中的业务规则示例下面以一个实际的应用数据为例来说明如何在数据质量分析中将业务规则用Jess 进行表示,并将它与其他方法进行比较。

在某车管所电子档案系统中存在如表4的数据表PROCESS_FILE,用于记录档案图片的基本信息。

我们将对该表进行数据质量分析,我们省略了数据完整性和有效性的检测,而只检测有多少数据违反了如下的业务规则(见表5)。

(1)SQL 查询。

使用SQ L 查询来做统计分析是最直接、最常用的手动分析方法。

上面的两条规则对应的SQL 查询语句(以Oracle PL/SQL 为例)为(见表6)。

53第3期 史峰:Jess 规则引擎在数据质量分析中的应用表4 P ROCESS_F IL E表数据示例FI LEN O 指标档案号PA GEN O页号PICP AT H图片存放路径CA T AL OG N O文件类型编号BAT CH N O业务类型02172331\2008032403\0217233\1.jpg4061012008032403 02172332\2008032403\0217233\2.jpg4061022008032403 02172333\2008032403\0217233\3.jpg4061052008032403表5 业务规则示例序号规则描述1PICP AT H由三部分组成:业务类型号(2008032403)、指标档案号(0217233)、页号(1)。

其中业务类型号必须与BAT CH N O字段值一致,指标档案号必须与FIL ENO字段值一致,页号必须与P AG ENO字段的值一致。

2CATA LOGN O字段值的前4位代表的是该文件对应的业务类型编号,并且该业务类型编号与BAT CHN O最后两个字符(如上面的 03)存在某种多对一的关系。

比如 4061、 4081、 4121对应 03, 4051对应 01等表6 SQ L查询语句示例规则序号SQ L查询语句1 select count(*)f rom pro cess_f ile twhere substr(t.picpath,2,10)!=t.batchno or t.fileno!= substr(t.picpath,13,7)or t.pageno!=to_number(substr(t.picpath,21,1))2 select count(*)f rom pro cess_f ile twhere not((substr(t.catalog no,1,4)in( 4061 , 4081 , 4121 )and substr(t.batchno,9,2)= 03 )or(substr(t.cata log no,1,4)in( 4051 , 4071 , 4101 )and substr(t.batchno,9,2)= 01 ))使用SQL查询语句来进行数据质量分析存在以下缺陷:!SQL查询语句的执行依赖于特定的数据库脚本工具,很难与其他工具(如报表工具)进行整合,用户通常需要手动收集、整理分析结果,降低了自动化程度。

相关主题