CN101763261B - 数据抽取、转换和加载方法、系统 - Google Patents
数据抽取、转换和加载方法、系统 Download PDFInfo
- Publication number
- CN101763261B CN101763261B CN 200910261283 CN200910261283A CN101763261B CN 101763261 B CN101763261 B CN 101763261B CN 200910261283 CN200910261283 CN 200910261283 CN 200910261283 A CN200910261283 A CN 200910261283A CN 101763261 B CN101763261 B CN 101763261B
- Authority
- CN
- China
- Prior art keywords
- data
- rule
- data conversion
- regulation engine
- editor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明实施例公开了提供数据抽取、转换和加载方法、系统及装置,以解决传统方式在ETL流程因数据转换逻辑变更时存在的开发量大的问题。其中方法包括:规则编辑器接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;抽取数据;所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换;将转换后的数据进行加载。可以看出,在本发明实施例中,当数据转换逻辑发生改变时,只需要利用规则编辑器重新定制数据转换规则就可以达到更新数据转换逻辑的目的,不需要对整个程序进行重复开发。与传统方式相比,开发量较小。
Description
技术领域
本发明涉及数据转换技术领域,更具体地说,涉及数据抽取、转换和加载方法、系统及装置。
背景技术
ETL(Extract-Transform-Load)是用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。ETL的流程可以用任何的编程语言去开发完成。
对于ETL中的数据转换流程,传统作法是将进行数据转换操作的规则嵌入到程序代码中的方式来实现的。然而,在实施本发明创造的过程中,发明人发现,利用规则内嵌到代码的方式编写成的数据转换软件一旦开发完成,便不易更改。现实情况却是数据转换逻辑往往需要频繁地变更,需要开发人员对整个程序进行重新编译,修改分散在各个代码段的数据转换规则,也即传统作法在实现数据转换逻辑变更时存在开发量大的问题。
发明人同时还发现,一般的规则引擎系统包括规则编辑器、规则库和规则引擎。其中规则编辑器用于定制(编辑)规则。通过规则编辑器可以将定制的规则存储在规则库中。在业务逻辑发生改变时,只需要重新定制业务规则就可以达到更新业务逻辑的目的,不需要对整个程序进行重复开发。规则引擎则可加载上述可执行规则文件中定制的规则,并执行上述规则完成预设的业务流程。规则引擎系统的上述特点为解决传统方式在ETL流程因数据转换逻辑变更时存在的开发量大的问题提供了契机。
发明内容
有鉴于此,本发明目的在于提供数据抽取、转换和加载方法、系统及装置,以解决传统方式在ETL流程因数据转换逻辑变更时存在的开发量大的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于规则引擎系统的数据抽取、转换和加载方法,所述规则引擎系统包括规则编辑器和规则引擎,所述方法包括:
规则编辑器接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;
抽取数据;
所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换;
将转换后的数据进行加载;
所述抽取数据的具体方式为:抽取数据,并按照封装规则将抽取到的数据封装成数据转换对象;
所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换的具体方式为:所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对所述数据转换对象进行转换。
一种基于规则引擎系统的数据抽取、转换和加载系统,所述规则引擎系统包括规则编辑器和规则引擎,所述数据抽取、转换和加载系统包括:
生成单元,用于利用所述规则编辑器接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;
抽取单元,用于抽取数据;
转换单元,用于利用所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换;
加载单元,用于将转换后的数据进行加载。
从上述的技术方案可以看出,在本发明中,在数据转换逻辑发生改变时,只需要利用规则编辑器重新定制数据转换规则就可以达到更新数据转换逻辑的目的,不需要对整个程序进行重复开发。与传统方式相比,开发量较小。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的基于规则引擎系统的ETL方法流程图;
图2为本发明实施例所提供的Drools规则引擎系统结构示意图;
图3为本发明实施例所提供的基于Drools规则引擎系统的ETL方法流程图;
图4为本发明实施例所提供的用户图形界面结构示意图;
图5为本发明实施例所提供的基于规则引擎系统的ETL系统结构示意图;
图6为本发明实施例所提供的基于规则引擎系统的ETL装置结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词、简写或缩写总结如下:
GUI,Graphical User Interface,图形用户界面;
Drools:是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现;
Java:一种程序设计语言;
Rete算法:Rete算法是一种前向规则快速匹配算法,其匹配速度与规则数目无关。Rete是拉丁文,对应英文是net,也就是网络。Rete算法通过形成一个rete网络进行模式匹配,利用基于规则的系统的两个特征,即时间冗余性(Temporal redundancy)和结构相似性(structural similarity),提高系统模式匹配效率;
规则:一条规则包括一个前件(Antecedent)和一个后件(Consequent)。其中,前件又称条件部分、模式部分或左部(Left Hand Side,LHS),即触发的条件,可以使一个或一组条件;至于后件,又称右部(Right Hand Side,RHS),是规则触发时要执行的一系列行为。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于规则引擎系统的数据抽取、转换和加载方法,以解决传统方式在ETL流程因数据转换逻辑变更时存在的开发量大的问题。
规则引擎系统一般包括规则编辑器和规则引擎,基于该规则引擎系统,上述方法具体流程如图1所示,至少包括如下步骤:
S11、规则编辑器接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;
S12、抽取数据;
S13、规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换;
S14、将转换后的数据进行加载。
可以看出,在本实施例中,在数据转换逻辑发生改变时,只需要利用规则编辑器重新定制数据转换规则就可以达到更新数据转换逻辑的目的,不需要对整个程序进行重复开发。与传统方式相比,其开发量较小。
上述步骤S12的具体实现方式可为:抽取数据,并按照封装规则将抽取到的数据封装成数据转换对象;
相应的,步骤S13的具体实现方式可为:规则引擎加载数据转换规则,并使用数据转换规则对数据转换对象进行转换。
在将数据封装数据转换对象时,可将一些对数据的处理算法封装进去。在程序中,一般用字段来存放数据,例如单价字段存放单价数据,数量字段存放数量数据,在封装时,可增加总价字段,该字段存放了处理算法:总价=单价*数量,并将对应于单价和数量的字段删除。
至于封装规则,既可以从预设的规则文件中获取,也可以在ELT过程中由规则引擎系统生成。
封装规则的生成可采用如下步骤实现:
规则引擎系统通过规则编辑器接收封装配置属性值,并根据所述封装配置属性值生成封装规则。
在另一实施例中,上述规则编辑器可采用GUI接收数据转换配置属性值和/或封装配置属性值。
至于ETL的加载流程,由于加载流程也会涉及到加载规则,因此,同样可以使用规则引擎系统对加载规则进行编辑。而由于一套业务流程的执行均需要业务规则的支持,所以规则引擎系统可在ETL全程中使用,以达到业务执行过程优化、业务变动灵活化的目的。
需要注意的是,上述规则编辑器可包括多个子规则编辑器,用于分别对数据转换规则、封装规则、加载规则等不同类的规则进行编辑。而各个子规则编辑器亦可采用GUI接收配置属性值。
前已述及ETL过程可以用任何编程语言来编写,Java这种目前比较流行的一种程序设计语言自然也可以用来对其进行编写。相应的,规则引擎系统所采用的编程语言也宜为Java,以实现与ETL过程的无缝对接。Drools规则引擎系统是一个基于Rete算法,专为Java语言所设计的开源规则引擎系统,且能同时运行在Java和.Net上。业务分析师或审核人员可以利用drools查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。
Drools规则引擎系统的一般结构可参见图2,包括编缉器201、规则库202、规则引擎203和工作内存204,其中规则引擎203又包括模式匹配器205和议程206。
参见图3,基于Drools规则引擎系统的ETL方法如下:
S31、规则编辑器201通过GUI接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;
GUI可参见图4。本实施例中的GUI主要由区域401-404组成。其中,区域401用于提示下一步该如何做和提供校验信息;区域402用于定义数据转换规则的编辑方式(自定义或文本);区域403是规则的列表,用来添加/删除规则;区域404为规则编辑区,用于编辑每个规则的操作信息。
GUI可支持数据转换逻辑的快速部署,无需编程。当用户需要变更规则时,只要向界面输入或选取数据转换配置属性值,完成输入或选取后,规则编辑器201解析GUI得到解析结果,并结合该解析结果和数据转换配置属性值生成数据转换规则将其封装在数据转换规则文件中,然后将该规则文件存入规则库202。可以理解的是,当用户对某些配置属性不进行赋值时,系统将按缺省或默认配置属性值生成数据转换规则。
S32、抽取数据,并按照封装规则将抽取到的数据封装成数据转换对象;
其中,封装规则既可为缺省封装规则,也可以是在ELT过程中由规则引擎系统动态生成的。
S33、规则引擎203将数据转换规则文件和步骤S32中封装的数据转换对象加载到工作内存204;
S34、模式匹配器205将数据转换规则文件中的数据转换规则和数据转换对象中的数据比较,对规则进行激活,并将被激活的规则放入议程206。
在某些情况下,可能同时会有多个规则被激活,也即在某一时刻规则的执行存在冲突,此时将同时被激活的多个规则放入工作内存204的冲突集合中,解决多个规则间的冲突,然后接顺序将被激活的规则放入议程206;
举一个简单的例子:数据转换规则1为:当X≥5时执行X+5,数据转换规则2为:当X≤10时执行X-1。如果数据对象中存在一个数值8,则数值8将同时激活数据转换规则1和数据转换规则2,数据转换规则1和数据转换规则2将产生执行冲突。此时,需要把数据转换规则1和数据转换规则2放入冲突集合中,对其冲突进行解决,解决完冲突后将数据转换规则1和数据转换规则2按顺序放入议程206。
S35、议程206按优先级顺序执行被激活的规则,直到议程206中的所有规则被执行完,此时数据转换对象被转换完毕;
当执行规则时,议程206会根据优先顺序逐条执行规则,由于规则的执行可能会改变工作区的数据对象,从而使议程206中的某些规则因为条件改变而失效,必须从议程206中撤销,也可能会激活原来不满足条件的规则,进入议程206。于是就产生了一种“动态”的规则执行链。因此S34-S35是一个循环过程,直到议程206中再无规则可执行时,该循环结束。
S36、将转换后的数据进行加载。
与上述ETL方法相对应,本发明实施例还公开了一种基于规则引擎系统的ETL系统,图5示出了该系统的一种结构,包括:
生成单元501,用于利用规则编辑器201接收数据转换配置属性值,并根据该数据转换配置属性值获得数据转换规则;
其中规则编辑器201可采用GUI接收数据转配置属性值。
抽取单元502,用于抽取数据;
转换单元503,用于利用规则引擎203加载上述数据转换规则,并使用上述数据转换规则对抽取的数据进行转换;
加载单元504,用于将转换后的数据进行加载。
与上述ETL方法相对应,本发明实施例还公开了一种基于规则引擎系统的ETL装置,图6示出了该装置601的一种结构,包括:
生成单元602,用于利用规则编辑器201接收数据转换配置属性值,并根据该数据转换配置属性值获得数据转换规则;
其中规则编辑器201采用GUI接收数据转配置属性值。
抽取单元603,用于抽取数据;
转换单元604,用于利用规则引擎203加载上述数据转换规则,并使用上述数据转换规则对抽取的数据进行转换;
加载单元605,用于将转换后的数据进行加载。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统和装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,所述程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种基于规则引擎系统的数据抽取、转换和加载方法,所述规则引擎系统包括规则编辑器和规则引擎,其特征在于,所述方法包括:
规则编辑器接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;
抽取数据;
所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换;
将转换后的数据进行加载;
所述抽取数据的具体方式为:抽取数据,并按照封装规则将抽取到的数据封装成数据转换对象;
所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换的具体方式为:所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对所述数据转换对象进行转换。
2.如权利要求1所述的方法,其特征在于:
所述封装规则通过所述规则编辑器接收封装配置属性值,并根据所述封装配置属性值生成。
3.如权利要求2所述的方法,其特征在于,所述规则编辑器接收封装配置属性值的具体方式为:所述规则编辑器采用图形用户界面GUI接收封装配置属性值。
4.如权利要求1-3任一项所述的方法,其特征在于,所述规则编辑器接收数据转换配置属性值的具体方式为:所述规则编辑器采用GUI接收数据转换配置属性值。
5.一种基于规则引擎系统的数据抽取、转换和加载系统,所述规则引擎系统包括规则编辑器和规则引擎,其特征在于,所述数据抽取、转换和加载系统包括:
生成单元,用于利用所述规则编辑器接收数据转换配置属性值,并根据所述数据转换配置属性值获得数据转换规则;
抽取单元,用于抽取数据;
转换单元,用于利用所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换;
加载单元,用于将转换后的数据进行加载;
所述抽取数据的具体方式为:抽取数据,并按照封装规则将抽取到的数据封装成数据转换对象;
所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对抽取的数据进行转换的具体方式为:所述规则引擎加载所述数据转换规则,并使用所述数据转换规则对所述数据转换对象进行转换。
6.如权利要求5所述的系统,其特征在于,所述规则编辑器采用GUI接收数据转换配置属性值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910261283 CN101763261B (zh) | 2009-12-28 | 2009-12-28 | 数据抽取、转换和加载方法、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910261283 CN101763261B (zh) | 2009-12-28 | 2009-12-28 | 数据抽取、转换和加载方法、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763261A CN101763261A (zh) | 2010-06-30 |
CN101763261B true CN101763261B (zh) | 2013-01-23 |
Family
ID=42494433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910261283 Active CN101763261B (zh) | 2009-12-28 | 2009-12-28 | 数据抽取、转换和加载方法、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763261B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542363B (zh) * | 2010-12-07 | 2015-04-29 | 金蝶软件(中国)有限公司 | 一种业务对象生成方法、装置与erp系统 |
CN102508912A (zh) * | 2011-11-09 | 2012-06-20 | 深圳市同洲电子股份有限公司 | 数据提取、转化和加载的方法及系统 |
CN102520965A (zh) * | 2011-12-28 | 2012-06-27 | 山东中创软件工程股份有限公司 | 消息处理方法及系统 |
CN102780780B (zh) * | 2012-07-25 | 2014-11-19 | 中国联合网络通信集团有限公司 | 云计算模式下的数据处理方法、设备和系统 |
CN103793400B (zh) * | 2012-10-30 | 2018-06-01 | 金蝶软件(中国)有限公司 | 数据表的批量调整方法及装置 |
CN103107895B (zh) * | 2013-01-10 | 2016-05-18 | 昆山百润科技有限公司 | 一种基于配置解析应用规则的计费业务规则引擎组合系统及其方法 |
CN103914349B (zh) * | 2014-04-28 | 2017-04-12 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式消息处理的系统及方法 |
CN105335412B (zh) * | 2014-07-31 | 2019-06-11 | 阿里巴巴集团控股有限公司 | 用于数据转换、数据迁移的方法和装置 |
US10628620B2 (en) * | 2014-08-01 | 2020-04-21 | Tata Consultancy Services Limited | Method and system for transforming mesh for simulating manufacturing processes and products |
CN104360905B (zh) * | 2014-10-29 | 2019-01-29 | 中国建设银行股份有限公司 | 一种应用于it系统的自适应控制方法和装置 |
CN105677353A (zh) * | 2016-01-08 | 2016-06-15 | 北京物思创想科技有限公司 | 特征抽取方法、机器学习方法及其装置 |
CN107092474B (zh) * | 2016-12-13 | 2021-04-30 | 北京星选科技有限公司 | 程序开发方法、etl处理方法及装置 |
CN109360093A (zh) * | 2018-09-12 | 2019-02-19 | 珠海凡泰极客科技有限责任公司 | 一种证券交易参考数据整合系统 |
CN110297859B (zh) * | 2019-06-10 | 2021-07-06 | 恩亿科(北京)数据科技有限公司 | 处理实时数据的方法和装置 |
CN111090689A (zh) * | 2019-12-06 | 2020-05-01 | 紫光云(南京)数字技术有限公司 | 基于动态规则的数据转换方法和转换系统 |
CN111813806B (zh) * | 2020-06-01 | 2024-04-19 | 北京百卓网络技术有限公司 | 一种基于策略服务实现etl系统及其方法 |
CN114911854A (zh) * | 2022-05-09 | 2022-08-16 | 建信金融科技有限责任公司 | 一种数据处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101651A (zh) * | 2007-08-01 | 2008-01-09 | 中兴通讯股份有限公司 | 一种电子工单数据的转换处理方法、系统及转换规则引擎 |
CN101158956A (zh) * | 2007-08-21 | 2008-04-09 | 南京联创科技股份有限公司 | 采用规则引擎对复杂数据进行批量处理的方法 |
CN101169713A (zh) * | 2006-10-25 | 2008-04-30 | 中兴通讯股份有限公司 | 支持转换引擎与映射规则相分离的模型转换框架及其方法 |
-
2009
- 2009-12-28 CN CN 200910261283 patent/CN101763261B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169713A (zh) * | 2006-10-25 | 2008-04-30 | 中兴通讯股份有限公司 | 支持转换引擎与映射规则相分离的模型转换框架及其方法 |
CN101101651A (zh) * | 2007-08-01 | 2008-01-09 | 中兴通讯股份有限公司 | 一种电子工单数据的转换处理方法、系统及转换规则引擎 |
CN101158956A (zh) * | 2007-08-21 | 2008-04-09 | 南京联创科技股份有限公司 | 采用规则引擎对复杂数据进行批量处理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101763261A (zh) | 2010-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101763261B (zh) | 数据抽取、转换和加载方法、系统 | |
CN106598579A (zh) | 区块链上集成动态类型编程语言方法和装置 | |
Vaupel et al. | Model-driven development of mobile applications allowing role-driven variants | |
Binkley et al. | Automated refactoring of object oriented code into aspects | |
CN106250104B (zh) | 一种针对服务器的远程操作系统、方法及装置 | |
CN104267947A (zh) | 一种编辑弹窗图片的方法及弹窗图片编辑装置 | |
CN103092742A (zh) | 程序日志记录优化方法和系统 | |
Vanderdonckt et al. | Towards a very large model-based approach for user interface development | |
CN115169810A (zh) | 一种面向电网调控的人工智能系统构建方法及装置 | |
CN101887370A (zh) | 创建系统用户界面的方法及装置 | |
CN109598107A (zh) | 一种基于应用安装包文件的代码转换方法及装置 | |
CN107545182A (zh) | 一种ios应用中绕过函数调用链检测的方法及系统 | |
CN102520965A (zh) | 消息处理方法及系统 | |
CN108654090A (zh) | 操作系统与游戏应用交互的方法及装置 | |
CN105264488A (zh) | 使用数组对来合并有序列表 | |
CN107341027A (zh) | 用户界面的生成方法和生成装置 | |
CN107479866A (zh) | 基于重构技术实现开放终端应用数据与功能的方法 | |
CN113157917A (zh) | 基于OpenCL的优化分类模型的建立、优化分类方法及系统 | |
CN115686527A (zh) | 基于算子的编译方法、装置、计算机设备和存储介质 | |
CN107220067A (zh) | 安卓系统下的可缩放矢量图形图片的加载方法和装置 | |
CN108375952A (zh) | 一种plc连续功能图编译和解释方法与装置 | |
CN114721632A (zh) | 一种基于低代码可视化组件的页面设计方法和装置 | |
Wanderley et al. | Generating goal-oriented models from creative requirements using model driven engineering | |
EP0979445A1 (en) | Universal software structure for representing model structures | |
CN104321774A (zh) | 用于防逆向工程和/或篡改程序的方法、系统以及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |