0 引言
商业智能是在必要的时间段,把正确有用的信息传递给适当的决策制定者,为企业提供有效决策。商业智能是以数据仓库为基础,运用OLAP、数据挖掘算法等对数据仓库数据进行发现。而其中的数据通过ETL工具来抽取,转换,加载到数据仓库中。ETL工具主要作用是从操作数据源导出数据,转换成统一的目标表,最后装载到数据仓库中。主要作用:一是有识别数据源的相关信息。二是抽取这些相关信息。三是将不同的数据源的信息统一格式。四是按照数据库抽取规则清洗数据集。五是将数据装载到数据仓库或数据集市上。
ETL过程是一个复杂的过程,ETL过程开发时间占整个数据仓库项目的80%,关系到整个数据仓库项目。ETL过程建模常常分为两个阶段:概念建模和逻辑模型。数据仓库前期设计主要研究ETL过程概念和属性的内在属性,这个时候建模称为概念建模。数据仓库后期设计主要研究是ETL数据流流向,这个时候建模称为逻辑建模。为了简化了整个ETL过程建设,提出了一个将概念模型转换成逻辑模型的映射算法。
1 ETL过程模型
1.1 概念模型
1.1.1 模型描述
在数据仓库前期设计中,数据据仓库设计者主要关注两个方面:一个是分析用户需求,第二个是就是分析现有数据源的结构和内容以及如何将源数据映射到数据仓库中,这对整个数据仓库建模能否成功起到至关重要的。这个时期主要问题是需要反复修正建模结果,修正假设条件以及映射规则,而概念模型能够很好解决这个问题。
概念模型主要分为两层:元模型层和ETL层,如图1所示。元模型层是由一组关于ETL过程的元数据的概念组成。ETL层是对ETL场景的描述。通过两个层,让ETL过程只关注在ETL过程概念和属性内在关系。
图1 ETL概念模型框架
1.1.2 元模型层
(1)概念和属性
属性:一个粒状信息即数据表示的最小单元。在关系数据表中属性就是一个字段,在记录文件中属性就是一列。
概念:一个概念代表在数据库和数据仓库中一个实体。概念在数据源中是一个关系数据表或者记录文件,而在数据仓库中是事实表和维度表等等。一个概念是一个名字和有限个属性集合。
(2)转换和关系
转换:一个转换通常定义为有限个输入属性。有限个输出属性,和转换本身的特征组成的。转换是执行单一任务,两个主要转换是过滤和数据清洗操作。
关系:关系是对属性转换的一个抽象。可以分为提供者关系,部分关系和候选关系等等。
(3)约束
约束:约束定义为有约束的有限的属性集合,和是一个执行约束的转换。当设计者需要对一个概念的数据有不同要求时,就要用到约束。比如,设计者需要加一个外键到一个属性上。
1.1.3 ETL层
ETL层是通过元模型层来描述具体ETL场景。由于元模型中具有很强的语义,能够很好描述ETL过程。用一个例子描述上面的建模问题,文中同样会使用这个例子。
1.1.4 例子
有两个数据源S1、S2和一个数据仓库DW。数据源S1和数据仓库DW都是在中国。而数据源S2是在美国。数据源S1的数据表信息S1.PARTSUPP(PKEY,SUPPKEY,CDATE,DEPART,QTY,COST)按照每日对数据进行存储。其中日期是中国日期和额度是人民币。数据源S2的数据表信息S2.PART-SUPP(PKEY,SUPPKEY,ADATE,QTY,COST)按照每月对数据进行存储,其中日期美国时间和额度是美元。数据仓库DW的数据表信息是DW.PARBSUPP(PKEY,SUPPKEY,DTY,QTY,COST)按照每月对数据进行存储,其中日期是中国日期和额度是人民币。所以需要将数据源S2的日期和额度分别转换成中国日期和人民币。
图2是概念模型对这个例子建模。
图2 ETL概念模型
1.2 逻辑模型
1.2.1 模型描述
在数据仓库中后期设计中,数据据仓库设计者主要关注ETL数据流从数据源到暑假仓库过程。ETL工作流定义为ETL数据流在记录集和各个操作之间的流转。通过运用工作流的概念,能够很好解决这个问题。一个ETL工作流建模成有向无环图,其中图的节点主要由活动和记录集组成。记录集主要是关系数据表和记录文件。图中的边主要表示数据提供之间的关系。边从节点N1到节点N2表示节点N2接受节点N1的数据。把N1称为数据的提供者,N2称为数据的消费者。
一个活动是一个四元组A(Id,I,O,S)。其中,Id是唯一标识活动。
I表示一组从活动数据提供者接受数据的有限个输入模式。
O表示—组提供给数据消费者的有限个输出模式。
S是一个关系代数表达式。每一个输出模式通过一个或多个复杂表达式产生数据。
逻辑模型分为两层:实体层和逻辑层,如图3所示。实体层作用和概念模型中元模型层中实体相似。逻辑层是对ETL数据流的描述。
图3 ETL逻辑模型框架
1.2.2 实体层
在概念模型中元模型层和逻辑模型中实体层有点相似。在逻辑模型中,一个概念模型实体对应一个逻辑模型实体,但是反之则不然。在这个逻辑模型中的实体如下:
①属性:属性的特点是名字和数据类型。
②记录集:记录集的特点是名字。
③名字:一个独有的识别活动的。
④基本的活动:一个活动包含一组提供者把数据交给活动处理的输入模式,和一组交给下一个数据消费者处理的输出模式。一个活动只有一个输入模式叫一元模式,一个活动有两个输入模式叫二元模式。常见的一元模式有转换,选择操作等等,而二元模式有聚合操作等。
输入模式:一个有限个输入模式从数据提供者获得数据。
输出模式:一组有限的输出模型用把数据交给数据的消费者。
函数:一组用来参与计算的属性。
1.2.3 逻辑层
逻辑层主要是对实体层中实体进行实例化,来描述ETL逻辑过程。假定有向无环图,只有有限个活动A,有限个记录集RS,有限个提供关系者Pr。那个这个图可以表示成C(V,E)。其中V=A和RS.E=Pr。RS的子集表示成RSs,这个子集包含图的数据源记录集。其他的记录集表示成RSt,这个子集包含数据仓库目标记录集。G(V,E)是按照拓扑顺序排序的。有执行一个ETL工作流,必须对这个执行顺序分配唯一的标示,最后工作流中的所有活动有提供者和消费者。数据源记录集只有输出模式,而数据仓库记录集只有输入模式。
1.2.4 例子
使用逻模型建模成工作流如图4所示。
图4 ETL逻辑模型工作流
2 映射算法
2.1 实体映射
将分析概念模型中的各个组成部分怎样从概念模型中的实体转换到逻辑模型中的实体即实体映射。进行从概念模型映射到逻辑模型,本文把概念模型中ETL层也看做成一个图G(V,E)。其中V代表属性和活动,E代表关系。概念模型中概念和属性转换成逻辑模型中的记录集和属性。概念模型中转换和约束转换成逻辑模型中的活动。
2.1.1 概念和属性的映射
概念:在概念模型中一个主要任务是通过属性来识别所有数据存储信息。这个涉及到整个ETL过程。一个记录集定义在逻辑模型中是由一个名字和组属性组成是通过概念模型中的概念转换而来的。属性:概念模型中的属性则和逻辑模型中的属性一对一映射。
2.1.2 关系和转换的映射
关系:在概念模型中关系包含很多种比如部分,提供关系等等。部分关系用来表示一个事实一个合适的概念由一组属性组成。在概念模型和逻辑模型中有着相同的语义和特点。提供者关系代表着数据流在整个ETL过程。一个概念提供者关系在数据源和目标属性设计到所有转换这些被应用通过设计需求。在所有数据源到目标数据转换中概念提供者关系能够被映射到逻辑提供者关系。
转换:在概念模型中,使用转换主要是表示一些任务。在逻辑层次上,使用活动来代表同一任务。从概念模型到逻辑模型映射主要包括概念转换到逻辑活动。
2.1.3 约束的映射
约束:约束常常用来表明对数据有不同的要求。对待ETL概念模型中约束就像其转换一样。他们映射成逻辑模型中的活动。
2.2 映射算法
在描述实体映射后,遇到下面三个问题需要解决:
①活动属性问题,主要是一个转换T在概念层次上被映射到逻辑层次上的一个活动。
②概念转换的组合问题,主要是在转换中存在多个组合转换。
③逻辑模型中活动执行顺序问题,主要是执行顺序。
这三个问题是映射算法重点。下面分三个部分进行解决。
2.2.1 活动属性问题
一个转换T在概念层次上被映射到逻辑层次上的一个活动,这个主要体现在将整个ETL概念模型分解成不同的stages。Stages表示属性概念等十分相近一个stage用一个正方形表示的,如图2所示。在自增初始化为零。
这个算法应用在映射算法13行中。主要用来自动生成概念模型中stages。这个算法完成了下面任务:首先是找出了所有属性。第二个是从提供者和消费者在转换中不同的角度,将设计问题分解成不同stages。
数据源概念在stage()(Ln:5)。先从数据源概念的属性开始,因为这个概念只有消费者操作。所有投影在同一个stage上(Ln:9)。通过对这些进行通过深度搜索求出的stages。最后stages中包含目标概念。算法最后返回所有stages通过stage[]数组。
2.2.2 组合问题
对于组合问题,就是有多个数据源和一个数据流中就会存在组合转换。为了描述简单,我们采用两个数据源和一个目标数据。对于一个二元转换Tb就是两个提供者和一个消费者。对于这三个实体可以是概念或者转换都依赖于Tb在工作流的位置。假定简单一个目标数据dw的数据来源s1和s2.,通过聚合的转换,和一个二元的转换Tb。使用自增技巧来设计逻辑工作流。首先,计算了stages1从s1到dw和stages2,从s1到dw。这样可以查找逻辑工作流中的二元转换。最后,将两个数据流通过一个连接点和一个活动他Tb.。
映射算法中(4-14)主要是解决组合问题。算法将代表概念设计的有向图作为输入。首先要检查所有通过源数据和目标数据两个概念建立的流(In:6)。通过前面直观的分析,主要目标是找到每个流的分界线。只查找目标工作流。对于每个流,第一个概念是数据源,第二个概念目标(Ln:7)。如果不存在二元转换的在工作流中,目标仍然是第二个概念。如果存在二元转换,将有两种方法到达的方法(Ln:9-12)。首先找到二元转换Tb,把它加入叫visited_tb集合。在下一个转换,第二个概念不在被考虑成当前流。在这个情况下,使用二元转换Tb作为目标(Ln:10)。这是因为数据流从,Tb到第二概念之前。
当确定了目标数据,修改了工作流边界。这个边界可以决定执行逻辑活动的顺序。将FS算法应用到选取的工作流中。FS算法的输出时一个数组Satge[].。数组包含一些必须的信息。比如执行顺序。这些概念流中数组stage[]被存在另个数组LW[]中。
2.2.3 执行顺序问题。
假定两个概念的转换Ti和Tj,然后是活动Ai和Aj执行顺序在逻辑模型中。当Ti属于stage标示符小于Tj的标识符,那么活动Ai执行在Aj之前。同一stage的转换执行顺序。我们把这个叫做stage相关转换。如果所有的活动是stage相关转换,这也就不存在顺序问题了。
下面是关于活动的执行顺序可以交换的。在解决了两个活动在工作流中执行顺序的优先级。需要满足下面的条件。
①活动A1和A2在图的相连的。不失一般性,A1是A2的提供者。
②这两个活动都是只有单一的输入输出模式。输出模式只有一个消费者。
③函数模式A1,A2是输入模式的一个子集。
④活动A1,A2的输入模式是提供者的子集。
所有stage相关转换能够相连的。这对于各个的活动也是合理的。因此条件①满足。stages被定义在两个概念之间,一个单一stage所有转换和对应的活动一样,只有单一的输入模式和输出模式,因此条件②也满足。属于同一个stage的两个转换是否可以交换,主要是是否满足条件③和条件④。
属于同一个stage的转换,和它在逻辑模型中对应活动是可以交换的。叫做顺序相关转换。在两个顺序相关转换Ai和Aj中,满足下面公式。
这些公式分别代表了条件③和条件④。在上面的公式代表了条件③和④。如果这些公式不满足两个stage相关转换,就不能决定这些执行顺序,需要从用户获得一些额外的信息。
下面是活动执行顺序在映射算法(Ln:15-32)的描述。算法的这个过程主要处理所有stage转换,比如数组Lw[]所有元素。每次发现新的节点,不论是每个数据存储或者活动。把它添加到图上,通过边和其他优先级的节点相连(Ln:20-24)。如果一个节点已经被添加到图上,然后两个工作流相交处。当前工作流和连接这个节点的工作流(Ln:25)。区分两种不同的情况:一种是节点是二元活动,或者是数据存储。一种是已经访问过的二元活动情况是比较简单的。只需要连接到优先级的节点在当前的处理的二元活动(Ln:26)。第二种情况是联合活动的使用,在各自的数据存储。为了达到目的,首先删除边在数据存储和工作流中最后一个节点的边(Ln:28)。然后添加新的一节点来代表联合活动(Ln:29)和连接两条数据流和数据存储(Ln:30)。最后映射算法返回代表逻辑设计的图。
3 结束语
从两种不同角度介绍了ETL过程的建模。概念建模主要研究整个ETL过程概念与属性的内在关系,而逻辑建模是研究ETL工作流。最后通过例子更加形象的说明两个模型。
由于概念模型和逻辑模型是数据仓库建设中不同时期的两个模型,利用映射算法把概念模型应用到逻辑模型中,减轻ETL过程后期建设工作。将来的工作主要用在ETL优化上。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:面向商业智能的ETL模型研究综述
本文网址:http://www.toberp.com/html/consultation/1082056960.html