基于CWM的ETL元数据库系统模型的设计

标签: | 发表时间:2021-05-25 15:35 | 作者:
出处:http://manu44.magtech.com.cn
1 引 言

在工业领域,数据仓库连同前端的数据挖掘工具向企业高层提供决策分析的平台体系机制被称为商业智能(Business Intelligence,BI)。BI项目的实施牵涉到企业各个事务处理系统之间海量数据的定向流动,这个数据流动的过程被称为数据抽取、转换与装载(Extraction、Transformation and Loading,ETL),是BI系统的心脏与灵魂 [  1]。ETL过程的管理目标与其数据质量是密切相关的,高效的ETL过程管理可以在一定程度上预防和控制ETL过程中出现的数据异常,是保障ETL数据有效性的重要手段。但是,在数据仓库实施中,ETL过程的多个业务逻辑交流环节都是基于人-人交流模式的,或者是通过人-文档-人的形式进行信息传递。这样的管理方式与数据仓库ETL过程的实际运行情况及结果是脱节的,使得ETL任务维护繁杂,返工代价大。鉴于此,本文提出基于公共仓库元模型(Common Warehouse Metamodel,CWM)标准建立ETL元数据库,它能描述ETL过程业务逻辑及数据变换细节,以此来实现人机交流,从而实现对ETL过程具体细节的管理及分析。

2 相关研究综述

以CWM和ETL两个字段为关键字,在CNKI数据库里检索,结果得到6篇文章,年代主要分布在2005年至2010年。目前,基于CWM的ETL过程管理研究主要集中在以下几个方面:

(1)业务变更、高层汇总数据分析与实时业务结合的纵深数据分析、实时业务处理,快速定义并部署用户的多维查询,实现基于数据仓库的联机分析处理 [  2]

(2)元数据的集成与管理,解决元数据管理混乱问题,实现不同系统之间的元数据交换 [  3,  4,  5]

(3)数据的映射规则和转换规则 [  6]

(4)缩短数据仓库的开发工作量、缩短开发周期、降低项目实施的风险,提出标准的ETL [  7]

基于CWM的ETL管理目前主要应用于元数据的管理,而对于某些数据问题被特定用户发现后,如何找到问题发生的位置和原因,没有更深入的研究。

本文在ETL元数据库的基础设计了一个系统模型,包含业务规则的改变触发相应程序改动预警、ETL任务调度可行性分析、ETL数据流向图展示、数据质量问题溯源定位分析4种机制, 可以把ETL过程中的各种静态和动态信息“透明”地展示给数据仓库相关用户,增强ETL过程与用户之间的信息理解与传递,从而达到改善ETL过程管理质量的作用。

3 CWM标准及其相关包类的选择

CWM是一个开放的业界标准,用于数据仓库及业务分析领域,为元数据定义公共元模型和基于XML语言的交换格式,描述一个完整的数据仓库系统的所有组成部分。作为能描述各种数据源和数据仓库对象的元数据,CWM本身就是一个相当复杂的信息体系。为了便于理解和易于开发者实现,CWM标准将元数据按照不同的功能和不同的描述层次进行分类,共分为21个元模型包,并在元对象机制(Meta Object Facility,MOF)框架中对不同包中的类与关联进行阐述 [  8]

在MOF框架中,底层的对象模型层是支撑基于该层以上整个元数据标准框架的基础。越往上层,元数据描述的内容就越宏观,越面向数据仓库的业务和管理。每个包的下层中与其相邻的包类对其起相应的支撑作用。对象模型层通过UML1.3描述框架来表达,它由4个包类组成,依次是核心包、行为包、关系包和实例包。其中核心包被其他三个包所依赖,它也被称为MOF元元模型 [  9],定义了数据仓库中不同对象共有的属性和动作,并衍生出不同对象的子类。对象模型是由OMG组织以UML1.3规范标准进行表述的。

从CWM标准中的21个元模型包可以知道,位于某层中的元模型只依赖于位于它下层的相关元模型,故如何使用CWM标准应根据具体的问题域需求来选择相应的元模型包,建立满足需求的系统模型。实现和使用公共仓库元模型的一部分是CWM元数据标准一个很重要的特征 [  10],这也是OMG组织设计原则的用意。所以,只需要使用与ETL相关的问题空间那部分CWM元模型即可。

与ETL转换过程细节和转换执行记录相关的包类有关系型包、转换包以及仓库操作包。其中,关系型包描述了ETL过程的静态元数据,转换包描述了ETL过程的动态元数据(包括转换过程细节和映射细节),仓库操作包描述了ETL过程实例级元数据。因此对于本文用于ETL过程元数据的应用功能来说,这些元数据已经能足够描述ETL过程的具体细节。

4 ETL元数据库系统的UML模型
4.1 元数据库模型分解图

CWM标准中ETL的元数据可分为以下三大块:有关数据对象的静态元数据、有关ETL步骤和映射过程的动态元数据以及ETL实例执行记录元数据。以上的元模型包类给出ETL过程管理元数据模型框架。在其基础上,通过适当的裁剪与扩展,并添加基本属性和附加属性,得到系统的元数据库模型 [  11]图1图2图3给出了ETL元数据库这三个部分的UML图。

图1 数据对象元数据UML模型

图1中,表对象是查询集对象的超类,查询集是表对象的一部分。由于表属于已命名列集(NamedColumnSet),而查询集是没有名字的,CWM把它们都归类为Classifier的子类,这是基于整体元数据管理体系来考虑的。这一部分元数据模型对应于CWM标准中的关系型包。

图2 ETL步骤与映射过程元数据UML模型

图2中, CFM类表示一类非常特殊的转换映射关系。这种映射的一端是多个列,另一端是单列。在CFM类的属性中,“字段名”代表的是单列端,“Classifier列集”代表的是多列端,多列端的数据类型是一个对象,即数据对象元数据里面的Classifier类。CFM类中“是否为归并”属性是一个布尔数据类型,该属性逻辑若成立(归并)则映射规则为多列端到单列端,若不成立(拆分)则映射规则为单列端到多列端。这一部分元数据模型对应于CWM标准中的转换包。

图3 ETL实例执行记录元数据UML模型

在ETL执行过程中,有时需要查看ETL整个活动的执行是否正确,在这里将“TS优先级”作为ETL执行记录的一个属性。这一部分元数据对应于CWM标准中的仓库操作包。

4.2 元数据库模型集成图

图4用节点来代替各部分元数据中的类,用节点间的联系来表达三部分的集成逻辑关系。

图4 ETL元数据集成后的UML模型

(1)数据对象元数据与ETL过程元数据之间的关联发生在映射关系上。转换映射包中的CM(ClassifierMap)类的源表与目标表都是从关系型包中的Table类中而来,转换映射包中的FM(FeatureMap)类的源字段和目标字段来源于关系型包中的Column类。而转换映射包中的CFM类的列集与列则分别来自于关系型包中的QCS类和Column类。

(2)ETL过程元数据与ETL执行记录之间的关联。在TE表中,详细记录了每次ETL操作的执行情况,包括ETL活动编号、步骤编号、优先级、是否正在执行以及是否执行成功等。以转换活动类的TA编号属性与转换步骤类的TS编号从而使得TE与ETL过程模式元数据之间的关联性。

通过以上UML模型,可以得出实施元数据库的通用策略。每个类对应一个元数据表,相关的类间具有特定的联系,从而建立起面向ETL过程的元数据描述体系。

5 某电信公司的ETL管理
5.1 ETL过程管理系统模型构建

系统的构建从实施ETL元数据库模型开始,搭建描述某数据仓库ETL过程的系统架构 [  12]。但在具体实施时需结合具体情况分析,因它的属性往往还涉及到所用数据的粒度属性。如在电信部门,数据一般是按照某一月份和某本地网编号聚集,因此在ETL执行情况记录表里面必须加上这两个属性,以明确ETL实例执行情况所代表的时期和地方。

根据整个系统涉及到的数据,该系统结构依照ETL活动层——ETL元数据库层——ETL元数据系统分析功能层三层模式来构造。内部结构按照元数据库功能来划分,包括元数据库操作区和分析区。其中分析区包括ETL任务调度分析、主题性数据的数据流向图展示、数据问题溯源分析等,依照ETL的元数据库还可以进行更多的功能扩充,以便对数据仓库ETL过程进行多方位的管理。具体结构如 图5所示:

图5 ETL过程管理系统环境及结构

5.2 ETL活动数据流实例入库

笔者根据某地区电信部门的集团上传任务中的“增值业务月数据分析”来设计文档和相关的源表、维表数据。按照上述模型建立元数据库,并录入相关“增值业务月数据分析”元数据,为每种元数据都赋予对应的业务描述。本文认为录入ETL元数据的执行者应该为ETL的设计人员。执行的步骤如下:

建立起模型对应的元数据库,一共8张表。分别是查询集表Query_ColSet、TA活动表Trans_Activity、TS步骤表Trans_Step、CM映射表Classifier_Map、FM映射表Feature_Map、CFM映射表Classifier_Feature_Map、TE执行记录表Trans_Execution以及更改预警记录表Modi_Metadata_Alarm_Info。

录入与该ETL整个活动有关的元数据,设置其编号为“TA001”,录入情况如 图6所示:

图6 ETL活动任务元数据录入情况

录入该ETL活动所包含的ETL步骤,按前面的描述该ETL活动共包含4个ETL步骤。录入情况如 图7所示:

图7 ETL活动步骤元数据录入情况

ETL活动的Trans_Step表新增了一个字段,OBJECT_ID。这个字段表示ETL步骤与数据库中的存储过程的对应关系。另外,ETL_S2与ETL_S3是同时进行的,所以它们的优先级是一样的,是该ETL活动中的第二个步骤。

录入每个步骤中表与表之间的具体映射过程描述。该描述存储在Classifier_Map表里。录入情况如 图8所示:

图8 表级映射元数据录入情况

可以看出每个ETL步骤中源表与目标表之间的对应关系。在ETL_S1步骤中,目标表是由三张源表整合得来;在ETL_S2和ETL_S3中,它们的目标表是相同的,并且从TM_ID字段中可以看出它们有一个源表F_2_JTSC_SERV_M的变换也是相同的,即TM04。

对于每个TM(Transformation Map)变换来说,它是字段级的多个映射关系的集合,这种映射关系可以是单字段与单字段间的FM(Feature Map)映射,也可以是单字段与多字段间的CFM(Classifier Feature Map)映射。同时,模型在这里得到扩展,增加维表映射关系。表中增加了D_QCS_ID\D_FEATURE_SOURCE与D_FEATURE_TARGET三个字段,分别表示维表的查询记录集编号、维表的源映射字段和目标映射字段。其中,查询记录集代表这样一类数据集合,它们没有被命名,属于表数据的一部分。查询记录集通过对表加入一定限制条件得到。以TM02变换为例,它在FM表、CFM表中的变化如 图9 图10所示:

图9 字段级映射元数据录入情况

图10 列集-字段映射元数据录入情况

可以看到,以上包含维表信息的元数据描述是白盒映射。比起只描述源字段和目标字段的黑盒映射来说,它能够更清楚地表示出字段的转换关系,从而为数据溯源分析提供可靠保障。

此外,查询记录集的录入情况如 图11所示:

图11 列集元数据录入情况

在查询记录集里面,包含有记录集来源表、限制条件和条件描述等信息。在限制条件里面,select开头的可以看作是列限制条件,where开头的可以看作是行限制条件。这个限制条件字段可以改进成更加细化的描述,比如细化为两个字段,一个字段记录行限制条件,另一个字段记录列限制条件。但在该ETL案例中,因不涉及到行限制,因此没必要作此改进。该ETL活动中使用到查询记录集的情况有两种:作为FCM映射中的多列端;维表中映射所需的字段列。

记录ETL活动实例执行操作的TE(Trans_Execution)表的数据录入情况与其他ETL元数据的录入情况有所不同。由于它是记录ETL程序执行情况的,所以它的触发事件就是ETL程序的执行。因此,可在每个ETL程序中的开头添加向TE表插入实例记录的操作,在每个ETL程序末尾添加更新TE表对应实例记录的操作,以确保每次执行的情况都能全面地记录下来。

5.3 运行结果

以展示ETL数据流向图为例,该部分功能的意义重在以全面清晰的方式向用户展示有关数据的ETL活动的所有元数据。最终用户在浏览分析数据时,系统用图形化的方式向用户展示分析数据的来源和流向。来源表和中间表以节点来表示,ETL每个步骤以有向箭头表示。如果用户想看到转换的具体过程,可以点击相关步骤,从而得到该步骤中字段级的映射关系。

当最终用户查看主题分析数据时,系统将绘制出该主题分析数据的来源与每步转换的描述。查询情况及图形展示界面如 图12所示:

图12 最终分析数据的数据流向图绘制

6 结语

ETL过程是关系型数据进行整合、变换和聚集的过程,而基于CWM标准的ETL元数据模型很好地描述了这个过程的进行,为其建立了一个变换细节可追溯的流程框架,从而在一定程序上能够预防和解决因人员业务交流、管理体制以及数据处理机制上的不足诱发的数据质量问题。这个元数据库模型不仅可应用在数据仓库领域,在众多IT系统领域的数据变换过程中同样可以得到充分的应用。而元数据对数据变换的业务逻辑和转换方式的描述功能方面上还有很多可利用的地方也值得研究。

由于CWM元数据模型标准是一个比较宏观的建模策略,因此该模型每个类中的属性会因具体应用环境的不同而不同,因此在设计实际的系统时需要按照具体的情况来增删具体的属性。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] 曹志伟.  支持ETL进化的元数据管理与应用[D]. 北京: 对外经济贸易大学, 2006. [本文引用:1]
[2] 胡细平.  全过程元数据驱动的实时BI基础平台研究[J]. 图书馆学研究, 2010(22): 10-16. [本文引用:1]
[3] 赵晓非.  ETL工具的元数据集成与管理研究[J]. 武汉理工大学学报, 2010, 32(16): 115-118. [本文引用:1]
[4] 高晓东, 汪恒杰, 胡大斌.  基于CWM的多数据源协同平台设计与实现[J]. 控制工程, 2006, 13(5): 485-487. [本文引用:1]
[5] 郑洪源, 周良.  基于CWM的标准ETL的设计与实现[J]. 吉林大学学报: 信息科学版, 2006, 24(1): 50-54. [本文引用:1]
[6] 雷启明.  基于CWM的商场数据仓库ETL系统架构研究[J]. 商场现代化, 2008(26): 39-40. [本文引用:1]
[7] 程跟上, 郑洪源, 丁秋林.  一种标准的ETL的设计思想及其实现[J]. 计算机应用研究, 2005, 22(3): 101-103. [本文引用:1]
[8] Poole J, Chang D, Tollert D, et al.  Common Warehouse Metamodel Developer’s Guide[M].  New York: John Wiley & Sons Inc, 2003: 69-72. [本文引用:1]
[9] OMG(Object Management Group).  Common Warehouse Metamodel (CWM) Specification. Version 1. 1[S].  Object Management Group, Inc. , Needham, MA, March2003. [本文引用:1]
[10] 程跟上.  基于公共仓库模型的ETL系统研究与实现[D]. 南京: 南京航空航天大学, 2005: 18-19. [本文引用:1]
[11] Mazón J N, Trujillo J.  An MDA Approach for the Development of Data Warehuses[J].  Decision Support Systems , 2008, 45(1): 41-58. [本文引用:1] [JCR: 2.201]
[12] 刘丽娟.  基于CWM的ETL元数据管理系统研究与实现[D]. 西安: 西北大学, 2008. [本文引用:1]

相关 [cwm etl 数据库] 推荐:

基于CWM的ETL元数据库系统模型的设计

- -
1 引 言 在工业领域,数据仓库连同前端的数据挖掘工具向企业高层提供决策分析的平台体系机制被称为商业智能(Business Intelligence,BI). BI项目的实施牵涉到企业各个事务处理系统之间海量数据的定向流动,这个数据流动的过程被称为数据抽取、转换与装载(Extraction、Transformation and Loading,ETL),是BI系统的心脏与灵魂.

ETL概述(原创)

- - ITeye博客
ETL,Extraction- Transformation-Loading的缩写,即数据抽取(Extract)、转换(Transform)、装载(Load)的过程,它是构建数 据仓库的重要环节. ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为 企业的决策提供分析依据.

美图离线ETL实践

- - SegmentFault 最新的文章
美图收集的日志需要通过 ETL 程序清洗、规整,并持久化地落地于 HDFS / Hive,便于后续的统一分析处理. ETL 即 Extract-Transform-Load,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程. ETL 一词较常用在数据仓库,但其对象并不限于数据仓库.

CloverETL 3.5.0 发布,开源的 ETL 框架

- - 开源中国社区最新新闻
CloverETL 3.5.0 发布,此版本包括了之前两个里程碑版本的特性,更新内容如下:. 在社区版添加了 Hadoop 连接. ETL 是一切数据仓库应用的基础. CloverETL 是一个基于 Java 的开源的 ETL 框架,同时还包含了一个 ETL设计器——.

Kettle环境变量在ETL工程上的应用

- - 行业应用 - ITeye博客
    好久没更新博文,最近临近离职,事情少了,有空停下来总结总结这段时间的东西.     今天先记录下Kettle环境变量的应用.     一个好的环境变量的使用,在业务变更或者环境变动后,只需要很少工作量的修改即可完成. 我们把变量分成系统环境变量和业务变量,系统环境变量是指那些在ETL中指定的系统级资源配置,如数据库信息、日志文件路径等等,这些变量一旦设定,不会经常变动;业务变量指跟当前ETL执行处理的内容有关,如日期、产品ID等等,跟运行时有关.

【转】ETL中用到的一些基本技术概论

- - 行业应用 - ITeye博客
在公司做了几年的数据,跟数据打了不少的交道. 对软件的理解,也慢慢的偏向于对数据的流转上,虽然用户体验UI也占据着很大的地位. 之前答应过坛子里的朋友,准备写关于写金蝶的系列文章. 时间恍惚,匆匆几年就这样过去了. 如今,笔者历经几年,从一个大男孩,变成了美丽女孩的丈夫. 曾今,朋友说到:有些人写代码是为了一辈子都去写代码,也有些人写代码是为了不去写代码.

ETL工具Pentaho Kettle的transformation和job集成

- - CSDN博客推荐文章
Kettle是一款国外开源的etl工具,纯java编写,数据抽取高效稳定(数据迁移工具). Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制. 2.1.       transformation实现解析.

基于Hadoop生态圈的数据仓库实践 —— ETL(一)

- - CSDN博客推荐文章
一、使用Sqoop抽取数据.         Sqoop是一个在Hadoop与结构化数据存储(如关系数据库)之间高效传输大批量数据的工具. 它在2012年3月被成功孵化,现在已是Apache的顶级项目. Sqoop有Sqoop1和Sqoop2两代,Sqoop1最后的稳定版本是1.4.6,Sqoop2最后版本是1.99.6.

日志收集:ETL,ELK以及Kafka/Redis - S.Mona

- -
其实一直都想写ELK的,毕竟在公司做了一年的日志ETL的工作,而且经历了上个世纪遗留的日志收集方案到现在流行的日志收集方案的变更,但是一直都没有找到合适的时间和机会写这一篇文章,趁着寒冬需求量下降没有那么忙碌就做了. ELK是Elastic公司的产品,elastic公司最远近闻名的就是他的ElasticSearch,这也是ELK中的’E’,其他’L’和’K’,分别是指Logstash以及Kibana.

ETL之metadata (讲了pentato 的kettle 的元数据) - sunnywang - IT博客

- -
--  商业智能平台研究:ETL之metadata. 元数据的定义就是:描述数据的数据,你非要问什么描述元数据,还是元数据本身,UML中也有这种概念,只不过是描述的对象不一样罢了.     让我们解释的更加通俗易懂一些吧,在javaSE中也有metadata的概念,最早的就算是JavaDoc了,在5.0之后,Annotation就是大量的使用metadata了,这是关于源代码的数据,具体来说就是关于Java的类、方法、字段等关联的附加数据.