CN104778236A - 一种基于元数据的etl实现方法及系统 - Google Patents
一种基于元数据的etl实现方法及系统 Download PDFInfo
- Publication number
- CN104778236A CN104778236A CN201510155483.7A CN201510155483A CN104778236A CN 104778236 A CN104778236 A CN 104778236A CN 201510155483 A CN201510155483 A CN 201510155483A CN 104778236 A CN104778236 A CN 104778236A
- Authority
- CN
- China
- Prior art keywords
- etl
- metadata
- data
- schema
- configuration file
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于元数据的ETL实现方法,包括:获取预先编写的ETL需求;令所述ETL需求按照数据转换规则形成ETL元数据;将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据;根据所述ETL元数据生成ETL配置文件;将生成的ETL配置文件编译成可执行ETL JOB。本发明大大提高了ETL管理效率,为数据仓库的发展和使用提供了方便;有效地解决了使用ETL工具时只能完全开发之后才能查错的技术缺陷;规范化的元数据模型可以很清晰地展现ETL过程,方便开发人员梳理与检查当前拟定的ETL流程,加深开发人员对ETL需求的理解,帮助开发人员找到最优的ETL设计方案,确保最终得到的ETL Job执行准确且高效。
Description
技术领域
本发明属于计算机的ETL技术领域,涉及一种ETL实现方法及系统,特别是涉及一种基于元数据的ETL实现方法及系统。
背景技术
ETL(Extract Transform Load,数据仓库技术)是数据抽取(Extract)、转换(Transform)、装载(Load)的过程,其是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗转换,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
目前各企业的ETL数据仓库基本采用两种开发方法:一种基于过程语言开发,例如:SQL语言(Structured Query Language,结构化查询语言)和PERL语言(Practical Extraction and ReportLanguage,实用报表提取语言)等;另一种基于ETL图形化开发工具,例如:DataStage、Informatica、OWB(Oracle Warehouse Builder)等。
在实际应用中,当选择过程语言开发时,ETL开发人员不但要梳理业务SQL,还要进行大量PERL代码开发。采用这种方式时,人工参与活动较多,对开发人员专业技术的要求也非常高。尤其是在代码开发量比较大的情况下,开发效率低下,导致技术对业务的响应支持比较慢。更由于每个开发人员代码书写风格不完全一致,这也使得最终代码的质量参差不齐。相应的,使用工具来实现ETL开发时,开发人员必须熟练掌握工具的开发技巧,并且,在对开发人员技能要求较高的同时,由于工具本身的限制,必须开发一个完整的ETL Job或流程才能进行配置验证,一旦出错,问题排查可能需要对整个Job进行检查或者逻辑进行重梳理,耗时长,效率低。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于元数据的ETL实现方法及系统,用于解决现有技术在实现ETL开发时,需要完整的ETL JOB或流程才能配置验证,在配置验证过程中一旦出错问题,在问题排查时可能需要对整个ETL JOB进行检查或者逻辑进行重梳理,造成耗时长、效率低现象的问题。
为实现上述目的及其他相关目的,本发明一方面提供一种基于元数据的ETL实现方法,包括:获取预先编写的ETL需求;令所述ETL需求按照元数据转换规则形成ETL元数据;将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据;根据所述ETL元数据生成ETL配置文件;将生成的ETL配置文件编译成可执行ETL JOB。
可选地,所述ETL需求包括需处理的数据源信息、处理后的数据结果样式、及数据处理方式。
可选地,所述ETL元数据包括ETL过程元数据和ETL过程明细元数据;其中,所述ETL过程元数据用于实现数据抽取、代码映射、数据清洗、数据转换、数据聚合、及数据加载;所述ETL过程明细元数据用于存储数据抽取明细元数据、代码映射明细元数据、数据清洗明细元数据、数据转换明细元数据、数据聚合明细元数据、及数据加载明细元数据。
可选地,令所述ETL需求按照元数据转换规则形成ETL元数据的步骤包括:根据所述ETL需求形成至少一个ETL单元;根据所述ETL单元形成所述ETL过程元数据;根据所述ETL过程元数据形成所述ETL过程明细元数据。
可选地,预先创建的ETL元数据模型包括多种数据模型,即包括ETL过程元数据模型、数据抽取元数据模型、代码映射元数据模型、数据清洗元数据模型、数据转换元数据模型、数据聚合元数据模型、以及数据加载元数据模型。
可选地,根据所述ETL元数据生成ETL配置文件的步骤包括:分别根据所述ETL元数据模型中包含的多种数据模型中每一种数据模型的所述ETL元数据生成相应的ETL配置信息;根据每一种数据模型中生成的所述ETL配置信息形成所述ETL配置文件。
可选地,预先创建的ETL元数据模型的具体内容包括:所属ETL名称、ETL元数据代码、ETL流程顺序、及所述ETL过程明细元数据。
可选地,将所述ETL元数据导入预先创建的ETL元数据模型以存储所述ETL元数据的步骤包括:标准化所述ETL元数据;将标准化后的所述ETL元数据导入预先创建的ETL元数据模型。
可选地,将生成的ETL配置文件编译成可执行ETL JOB的步骤包括:编译所述ETL配置文件;根据编译后所述ETL配置文件生成可执行的ETL JOB。
本发明另一方面还提供一种基于元数据的ETL实现系统,包括:编写模块,用于预先编写ETL需求;创建模块,用于预创建ETL元数据模型;与所述编写模块连接的获取模块,用于从所述编写模块中获取预先编写的ETL需求;与所述获取模块连接的ETL元数据形成模块,用于令所述ETL需求按照元数据转换规则形成ETL元数据;分别与所述创建模块和所述ETL元数据形成模块连接的数据导入模块,用于将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据;与所述数据导入模块连接的配置文件生成模块,用于根据所述ETL元数据生成ETL配置文件;与所述配置文件生成模块的编译模块,用于将生成的ETL配置文件编译成可执行ETL JOB。
如上所述,本发明所述的基于元数据的ETL实现方法及系统,具有以下有益效果:
1、本发明中以元数据为基础,为企业的数据仓库提供了最基础的数据描述和定义,例如:数据源定义、目标定义、转换规则等;同时元数据还包含关于数据含义的信息等等,大大提高了ETL管理效率,为数据仓库的发展和使用提供了方便;
2、在本发明所述的基于元数据的ETL实现方法,从ETL需求的转换、ETL元数据的模型化、生成ETL的配置文件到最后的编译生成可执行Job,每个环节都相互联系,若某一个环节的形成过程或配置的元数据出现异常,都将导致下一个环节的出错,即在整个过程中,任一个环节出错立即就能知道,有效地解决了使用ETL工具时只能完全开发之后才能查错的技术缺陷;
3、在本发明所述的基于元数据的ETL实现方法中,通过形成的元数据,自动生成ETLJOB,规范了整个ETL开发流程。将传统的ETL开发过程转化为一种量化的过程,极大提高了开发效率。规范化的元数据模型可以很清晰地展现ETL过程,方便开发人员梳理与检查当前拟定的ETL流程,加深开发人员对ETL需求的理解,帮助开发人员找到最优的ETL设计方案,确保最终得到的ETL Job执行准确且高效。
附图说明
图1显示为本发明的基于元数据的ETL实现方法流程示意图。
图2显示为本发明的基于元数据的ETL实现方法中步骤S2的具体流程示意图。
图3显示为本发明的基于元数据的ETL实现方法中步骤S3的具体流程示意图。
图4显示为本发明的基于元数据的ETL实现方法中步骤S4的具体流程示意图。
图5显示为本发明的ETL元数据模型到配置文件的转换流程示意图。
图6显示为本发明的基于元数据的ETL实现系统的原理结构示意图。
元件标号说明
1 基于元数据的ETL实现系统
11 编写模块
12 创建模块
13 获取模块
14 ETL元数据形成模块
15 数据导入模块
16 配置文件生成模块
17 编译模块
S1~S5 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
请参阅附图。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
下面结合实施例和附图对本发明进行详细说明。
本实施例提供一种基于元数据的ETL实现方法,请参阅图1,显示为基于元数据的ETL实现方法流程示意图。首先需要对需求对象进行描述,在本实施例中,以统计某产品各品牌月销量为需求对象。所述需求对象包括三项内容,即产品每日销量,品牌规格代码、及各品牌月销量。所述产品每日销量由表1描述,所述品牌规格代码由表2描述,所述各品牌月销量由表3描述。
表1:产品每日销量
字段名 | 数据类型 | 字段长度 | 字段精度 | 字段描述 |
CUR_DATE | Date | <default> | 0 | 当前日期 |
PRO_CODE | Char | 20 | 0 | 产品代码 |
DAY_SALES | Float | 18 | 4 | 日销量 |
UPT_TIME | DateTime | 23 | 3 | 更新时间 |
表2:品牌规格代码
字段名 | 数据类型 | 字段长度 | 字段精度 | 字段描述 |
LSBH | Bigint | <default> | 0 | 流水编号 |
PRO_CODE | Char | 20 | 0 | 产品代码 |
BRA_CODE | Char | 12 | 0 | 品牌代码 |
BEG_DATE | Date | <default> | 0 | 开始日期 |
END_DATE | Date | <default> | 0 | 结束日期 |
表3:各品牌月销量
字段名 | 数据类型 | 字段长度 | 字段精度 | 字段描述 |
YEAR_STAT | Varchar | 4 | 0 | 年份 |
MONTH_STAT | Varchar | 2 | 0 | 月份 |
BRA_CODE | Char | 12 | 0 | 品牌代码 |
MON_SALES | Float | 18 | 4 | 月销量 |
UPT_TIME | DateTime | 23 | 3 | 更新时间 |
如图1所示,所述基于元数据的ETL实现方法包括以下步骤:
S1,获取预先编写的ETL需求。在本实施例中,所述ETL需求包括需处理的数据源信息、处理后的数据结果样式、及数据处理方式。
根据对需求对象的描述,在本实施例中,获取的统计产品各品牌月销量的ETL需求如表4所示:
表4:统计产品各品牌月销量的ETL需求
在表4中,数据库DB01即为ETL需求中的需处理的数据源信息;表MON_SALES_STAT(表3)即为处理后的数据结果样式;数据抽取、代码映射、数据清洗、数据聚合以及数据加载都表示数据处理方式。
S2,令所述ETL需求按照元数据转换规则形成ETL元数据。其中,所述ETL元数据包括ETL过程元数据和ETL过程明细元数据。所述ETL过程元数据用于实现数据抽取、代码映射、数据清洗、数据转换、数据聚合、及数据加载。所述ETL过程明细元数据用于存储数据抽取明细元数据、代码映射明细元数据、数据清洗明细元数据、数据转换明细元数据、数据聚合明细元数据、及数据加载明细元数据。在本实施例中,所述元数据转换规则是指ETL主要分为数据抽取、数据转换、数据清洗、数据汇总、数据加载、数据合并等数据处理过程,元数据转换规则主要是将各个处理过程中所涉及的ETL元数据整理成满足ETL元数据存储模型,即ETL元数据模型要求的元数据格式。请参阅图2,显示为步骤S2的具体流程示意图。如图2所示,步骤S2具体包括以下步骤:
S21,根据所述ETL需求形成至少一个ETL单元;特别地,本实施例中根据ETL需求形成多个ETL单元。
例如,在上述统计各品牌产品月销量的例子中,整个过程中,首先,产品每日销量表(表1)映射到品牌规格代码表(表2),以确定各产品对应的品牌,随后再根据各品牌月销量统计表(表3)汇总品牌销量,得到各品牌月销量统计。针对这一过程,我们在实际操作过程中将ETL需求划分为六个ETL单元:日销量数据抽取、品牌代码映射、品牌日销量数据清洗、日期转换、品牌月销量汇总、以及汇总月销量加载到统计表。
S22,根据所述ETL单元形成所述ETL过程元数据。在上述统计各品牌产品月销量的例子中,将所述ETL需求分成了6个单元之后,将6个单元可以分别使用ETL过程元数据进行表达,包括:数据抽取,代码映射,数据清洗,数据转换,数据聚合,以及数据加载,如表5所示:
表5:ETL过程元数据表达
ETL元数据 | ETL流程顺序 |
数据抽取 | 1 |
代码映射 | 2 |
数据清洗 | 3 |
数据转换 | 4 |
数据聚合 | 5 |
数据加载 | 6 |
从表5中可以看出,所述ETL过程元数据包含两部分内容:数据处理过程(数据抽取,代码映射,数据清洗,数据转换,数据聚合,以及数据加载)和ETL流程顺序。其中,数据处理过程对应表5中第一列“ETL元数据”,“ETL流程顺序”是ETL元数据对应的业务顺序,即流程执行顺序。
S23,根据所述ETL过程元数据形成所述ETL过程明细元数据。以下分别对统计各品牌产品月销量的例子中各类过程明细元数据。表6表示数据抽取明细元数据,具体地,数据抽取元数据包括三个部分内容:输入源信息、数据抽取规则、以及输出目标属性(如表7)。
表6:数据抽取明细元数据
表7:数据抽取元数据的输出目标属性
输出字段 | 字段类型 | 字段长度 | 字段精度 |
CUR_DATE | Date | <default> | 0 |
PRO_CODE | Char | 20 | 0 |
DAY_SALES | Float | 18 | 4 |
PRO_CODE | Char | 20 | 0 |
BRA_CODE | Char | 12 | 0 |
BEG_DATE | Date | <default> | 0 |
END_DATE | Date | <default> | 0 |
其中,表6中“抽取源描述”表示上述输入源信息、“抽取规则”表示数据抽取规则。结合抽取源描述与抽取规则信息,在本实施例所述方法中生成配置文件时即可确定完整的数据抽取逻辑;最后的输出目标属性即对应表7,其中数据抽取元数据的输出目标属性包括:输出字段列表、字段类型、字段长度以及字段精度。
代码映射明细元数据,具体地,数据映射元数据包括两个部分内容:代码映射方式、输出目标属性。如表8和表9所示:
表8:代码映射方式
映射方式 | 映射字段 | 映射源字段 |
leftouterjoin | PRO_CODE | DMYSCQ.PRO_CODE |
表9:数据映射元数据的输出目标属性
输出字段 | 字段类型 | 字段长度 | 字段精度 |
CUR_DATE | DATE | <default> | 0 |
PRO_CODE | char | 20 | 0 |
DAY_SALES | FLOAT | 18 | 4 |
BRA_CODE | char | 12 | 0 |
BEG_DATE | DATE | <default> | 0 |
END_DATE | DATE | <default> | 0 |
其中,数据映射元数据中包括的代码映射方式对应表8中的“映射方式”、“映射字段”、“映射源字段”三列,即结合映射方式与映射对应字段,确定完整的代码映射规则;数据映射元数据中包括的输出目标属性即对应表9,类似数据抽取元数据部分,其中,数据映射元数据的输出目标属性包括:输出字段列表、字段类型、字段长度以及字段精度。
数据清洗元数据,具体地,数据清洗元数据包括两个部分内容:数据清洗条件、输出目标属性。如表10和表11所示:
表10:数据清洗条件
清洗条件 |
CUR_DATE>=BEG_DATE AND CUR_DATE<END_DATE |
表11:数据清洗元数据的输出目标属性
输出字段 | 字段类型 | 字段长度 | 字段精度 |
CUR_DATE | DATE | <default> | 0 |
PRO_CODE | char | 20 | 0 |
DAY_SALES | FLOAT | 18 | 4 |
BRA_CODE | char | 12 | 0 |
其中,数据清洗元数据中的数据清洗条件对应表10中的“清洗条件”列,该列通过SQL表达式清晰地描述了数据清洗规则;数据清洗元数据中的输出目标属性类似前述,如表11所示,数据清洗元数据的输出目标属性包括:输出字段列表、字段类型、字段长度以及字段精度。
数据转换元数据,具体地,数据转换元数据包括两个部分内容:数据转换方式、输出目标属性。如表12和表13所示:
表12:数据转换方式
转换方式 | 转换源字段 | 转换目标字段 |
substring(varchar(CUR_DATE),0,4) | SJQX.CUR_DATE | YEAR_STAT |
substring(varchar(CUR_DATE),4,2) | SJQX.CUR_DATE | MONTH_STAT |
表13:数据转换元数据的输出目标属性
输出字段 | 字段类型 | 字段长度 | 字段精度 |
YEAR_STAT | VARchar | 4 | 0 |
MONTH_STAT | VARchar | 4 | 0 |
PRO_CODE | char | 20 | 0 |
DAY_SALES | FLOAT | 18 | 4 |
BRA_CODE | char | 12 | 0 |
其中,数据转换元数据中数据转换方式对应表12中的“转换方式”、“转换源字段”、“转换目标字段”三部分内容,三者结合在生成配置文件时可确定完整的数据转换规则。特别地,在本实施例中,将日期源字段转换成年份与月份两个目标字段。数据转换元数据中的输出目标属性类似前述,如表13所示,数据转换元数据的输出目标属性包括:输出字段列表、字段类型、字段长度以及字段精度。
数据聚合元数据,具体地,数据聚合元数据包括两个部分内容:数据聚合方式、输出目标属性。如表14和表15所示:
表14:数据聚合方式
聚合方式 | 聚合分组字段列表 | 聚合源字段 | 聚合目标字段 |
SUM | YEAR_STAT;MONTH_STAT;BRA_CODE | DAY_SALES | MON_SALES |
表15:数据聚合元数据的输出目标属性
输出字段 | 字段类型 | 字段长度 | 字段精度 |
YEAR_STAT | VARchar | 4 | 0 |
MONTH_STAT | VARchar | 4 | 0 |
BRA_CODE | char | 12 | 0 |
MON_SALES | FLOAT | 18 | 4 |
其中,数据聚合方式较为复杂,数据聚合元数据中的数据聚合方式如表14所示包含了“聚合方式”、“聚合分组字段列表”、“聚合源字段”与“聚合目标字段”四个部分,聚合方式通常表达为相应的聚合函数,本实施例中使用“SUM”求和;结合聚合方式与聚合分组字段列表,聚合源字段与聚合目标字段,在生成配置文件时确定完整的数据聚合规则;数据聚合元数据中的输出目标属性类似前述,如表15所示,数据聚合元数据的输出目标属性包括:输出字段列表、字段类型、字段长度以及字段精度。
数据加载元数据,具体地,数据加载元数据包括两个部分内容:数据加载方式、输出目标属性。如表16所示:
表16:数据加载方式
具体地,数据加载元数据中的数据加载方式对应表16中的“加载方式”、“加载前语句”、“加载后语句”三部分,其中,“加载方式”通常表达为“insert”,一般来说,结合加载前语句与加载后语句可实现“insert”、“delete then insert”、“update”、“insert then update”、“update theninsert”等多种加载方式,本实施例中使用“delete then insert”方式加载;数据加载元数据中的输出目标属性对应表16中的“目标描述”与“加载目标”模块,其中,目标描述通常包含:数据库信息、目标文件存放路径等,特别地,在本实施例中目标为数据库DB01,加载目标为数据库表MON_SALES_STAT。
更进一步地,在实施过程中,根据ETL需求形成ETL元数据是整个基于元数据的ETL实现方法中最为关键、重要的一步,决定了最后生成的ETL Job执行效率的高低。
S3,将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据。请参阅图3,显示为步骤S3的流程示意图。在本实施例中,预先创建的ETL元数据模型包括多种数据模型,即包括ETL过程元数据模型、数据抽取元数据模型、代码映射元数据模型、数据清洗元数据模型、数据转换元数据模型、数据聚合元数据模型、以及数据加载元数据模型。
如图3所示,本步骤具体包括以下两个步骤:
S31,标准化所述ETL元数据;
S32,将标准化后的所述ETL元数据导入预先创建的ETL元数据模型。
具体地,针对前述得到的ETL元数据(ETL过程元数据和ETL过程明细元数据),分别对其进行标准化处理,使其符合ETL元数据模型要求,随后再将标准化的ETL元数据导入到ETL元数据模型中。表17对上述统计某产品各品牌月销量的例子中的ETL元数据模型进行描述:
表17:ETL过程元数据标准化过程
ETL名称 | ETL元数据代码 | ETL元数据 | ETL流程顺序 |
ETL01 | SJCQ | 数据抽取 | 1 |
ETL01 | DMYS | 代码映射 | 2 |
ETL01 | SJQX | 数据清洗 | 3 |
ETL01 | SJZH | 数据转换 | 4 |
ETL01 | SJJH | 数据聚合 | 5 |
ETL01 | SJJZ | 数据加载 | 6 |
表17中即是对ETL过程元数据进行标准化的过程,它包含了:元数据所属ETL信息、ETL流程映射模型中存储的ETL元数据代码以及ETL过程元数据信息。其中,ETL过程元数据中的元数据所属ETL信息对应“ETL名称”列,“ETL名称”是数据库中存储的ETL唯一标识;“ETL元数据代码”为元数据模型中存储的ETL流程代码;ETL过程元数据信息对应“ETL元数据”与“ETL流程顺序”列。
数据抽取元数据模型,具体地,包括:元数据所属ETL信息、ETL元数据代码、ETL流程顺序、输入源信息、源数据抽取规则、输出目标属性等模块,如表18和表19所示:
表18:数据抽取元数据模型
表19:数据抽取元数据模型的输出目标属性
其中,数据抽取元数据模型中的元数据所属ETL信息对应表18中的“ETL名称”;“ETL元数据代码”与“ETL流程顺序”对应ETL过程元数据模型中的“ETL元数据代码”和“ETL流程顺序”,由此可确定ETL明细元数据模型与过程元数据模型之间一一对应的关系;数据源信息对应表18中的“抽取源描述”与“是否抽取文件”列内容,“抽取源描述”通常表达为:具体数据库或文件存放路径,本实施例中,指定为数据库DB01;“是否抽取文件”用于区分源类型,其取值为“Y”或“N”,Y表示输入源为文件类型,N表示输入源为数据库对象;源数据抽取规则对应表18中的“抽取规则”,可使用文件名或SQL表达式进行表达。结合前述的抽取源描述与抽取规则两部分内容,在本实施例所述方法中生成配置文件时即可确定完整的数据抽取逻辑;最后的输出目标属性即对应表19中的“目标输出属性”模块,包括目标字段属性信息、目标所属ETL流程与流程内ETL执行顺序。
代码映射元数据模型,包括:元数据所属ETL信息、ETL元数据代码、ETL流程顺序、代码映射方式、输出目标属性等模块,如表20和表21所示:
表20:代码映射元数据模型
表21:代码映射元数据模型的输出目标属性
与数据抽取元数据模型相同,代码映射元数据模型中的元数据所属ETL信息对应表20中的“ETL名称”;“ETL元数据代码”与“ETL流程顺序”分别对应ETL过程元数据模型中的“ETL元数据代码”和“ETL流程顺序”,用于确定ETL明细元数据模型与过程元数据模型之间一一对应的关系。又,代码映射元数据模型中的代码映射方式包括“映射方式”、“映射字段”、“映射源字段”三个列,一般来说,映射方式有:左外连接、右外连接、内连接、以及全外连接,本实施例中使用的是左外连接leftouterjoin;映射字段与映射源字段一一对应,映射源字段由三部分组成,ETL元数据代码、ETL顺序、源字段名,在本实施例中表达为:SJCQ.2.PRO_CODE,表示源字段来自ETL流程SJCQ,执行顺序为2的字段PRO_CODE;此外,最后的输出目标属性即对应表21中的“目标输出属性”模块,包括目标字段属性信息、目标所属ETL流程与流程内ETL执行顺序。
数据清洗元数据模型,包括:元数据所属ETL信息、ETL元数据代码、ETL流程顺序、数据清洗条件、输出目标属性等模块,如表22和表23所示:
表22:数据清洗元数据模型
表23:数据清洗元数据模型输出目标属性
其中,数据清洗元数据模型中的元数据所属ETL信息、ETL元数据代码、ETL流程顺序和输出目标属性模块与数据抽取元数据模型相同。其中,数据清洗条件使用逻辑清晰地SQL表达式来定义,在本实施例中,清洗条件的CUR_DATE值在BEG_DATE与END_DATE范围内。
数据转换元数据模型,包括,元数据所属ETL信息、ETL元数据代码、ETL流程顺序、数据转换方式、输出目标属性等模块,如表24和表25所示:
表24:数据转换元数据模型
表25:数据转换元数据模型的输出目标属性
元数据所属ETL信息、ETL元数据代码、ETL流程顺序和输出目标属性模块与数据抽取元数据模型相同,如表24,其中,数据转换方式包括“转换方式”、“转换源字段”、“转换目标字段”三个列,在本实施例中,转换方式使用SQL表达式定义;转换源字段由ETL元数据代码、ETL顺序、源字段名组成,在本实施例中使用的SJQX.1.CUR_DATE其源字段来自ETL流程SJQX,执行顺序为1的字段CUR_DATE。
数据聚合元数据模型,包括:元数据所属ETL信息、ETL元数据代码、ETL流程顺序、数据聚合方式、输出目标属性等模块,如表26和表27所示:
表26:数据聚合元数据模型
表27:数据聚合元数据模型的输出目标属性
元数据所属ETL信息、ETL元数据代码、ETL流程顺序和输出目标属性几个模块基本与数据抽取元数据模型相同,其中,如表26,数据聚合元数据模型中包括的数据聚合方式包括“聚合方式”、“聚合分组字段列表”、“聚合源字段”、“聚合目标字段”以及“目标字段类型”五个部分,与在ETL元数据中的描述相对应,聚合方式通常表达为相应的聚合函数,特别地,本实施例中使用“SUM”求和;“聚合源字段”的构成与前面“转换源字段”、“映射源字段”相同,本例中SQZH.1.DAY_SALES表示源字段为ETL流程SJZH,执行顺序为1的字段DAY_SALES;“聚合分组字段列表”列示了生成技术元数据时需要使用的分组字段,按字段所列先后顺序依次作为分组条件,字段之间使用分隔符“;”区别;“聚合目标字段”与“目标字段类型”定义了作为聚合结果输出的字段属性。
数据加载元数据模型,包括:元数据所属ETL信息、ETL元数据代码、ETL流程顺序、数据加载规则、输出目标属性扥模块,如表28所示:
表28:数据加载元数据模型
其中,元数据所属ETL信息、ETL元数据代码、ETL流程顺序几个模块基本与数据抽取元数据模型相同,其中,数据加载元数据模型中数据加载规则包括:“加载方式”、“加载前语句”、“加载后语句”三部分,其表达方式在前面ETL加载元数据如前述。输出目标属性包括“加载目标”、“目标描述”、“是否文件”三部分,其中,“目标描述”通常表达为:具体数据库或文件存放路径,本实施例中,指定为数据库DB01;“是否抽取文件”用于区分目标类型,其取值为“Y”或“N”,Y表示加载目标为文件类型,N表示目标为数据库对象,本例中指定为数据库对象。结合数据加载规则与输出目标属性,在本实施例所述方法中后面生成配置文件时即可确定完整的数据加载逻辑。
在本实施例中,将ETL需求形成了ETL元数据的情况下,标准化ETL元数据并导入ETL元数据模型过程将变得简单方便,以及操作,规范化的元数据模型可以很清晰地展现ETL过程,确保最终生成的ETL Job执行准确且高效,尤其当ETL需求较复杂的情况下,这一优势体现的更加明显。
S4,根据所述ETL元数据生成ETL配置文件。请参阅图4,显示为步骤S4的具体流程示意图。如图4所示,步骤S4具体包括以下步骤:
S41,分别根据所述ETL元数据模型中包含的多种数据模型中每一种数据模型的所述ETL元数据生成相应的ETL配置信息;
S42,根据每一种数据模型中生成的所述ETL配置信息形成所述ETL配置文件。
具体地,在本实施例中,根据实际情况设计并开发能自动实现模型到配置文件转化的实用程序,利用程序将不同的元数据模型中所包含的元数据信息,分别转化为ETL配置信息,并最终生成完整的ETL配置文件。特别地,在本实施例中,使用一种驱动程序来自动实现这一转化过程,如图5所示,为本实施例中ETL元数据模型到配置文件的转换流程,图中将除抽取与加载的数据处理过程汇总成数据处理,数据处理元数据模型实际上包含了:代码映射元数据模型、数据清洗元数据模型、数据转换元数据模型、数据聚合元数据模型四部分。
S5,将生成的ETL配置文件编译成可执行ETL JOB。在本实施例中,实现配置文件的编译可以有多种方法,本实施例使用最常用的C++编译器编译配置文件,生成可直接执行的ETLJob。
本实施例还提供一种基于元数据的ETL实现系统1,请参阅图6,显示为基于元数据的ETL实现系统原理结构示意图。如图6所示,所述基于元数据的ETL实现系统1包括:编写模块11、创建模块12、获取模块13、ETL元数据形成模块14、数据导入模块15、配置文件生成模块16、及编译模块17。
其中,所述编写模块11用于预先编写ETL需求。
所述创建模块12用于预创建ETL元数据模型。
与所述编写模块11连接的获取模块13,用于从所述编写模块中获取预先编写的ETL需求。
与所述获取模块13连接的ETL元数据形成模块14用于令所述ETL需求按照数据转换规则形成ETL元数据。所述ETL元数据形成模块14还用于根据所述ETL需求形成至少一个ETL单元、根据所述ETL单元形成所述ETL过程元数据、及根据所述ETL过程元数据形成所述ETL过程明细元数据。
分别与所述创建模块12和所述ETL元数据形成模块14连接的数据导入模块15用于将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据。所述数据导入模块15还用于标准化所述ETL元数据及将标准化后的所述ETL元数据导入预先创建的ETL元数据模型。
与所述数据导入模块15连接的所述配置文件生成模块16用于根据所述ETL元数据生成ETL配置文件。所述配置文件生成模块16还用于根据所述ETL元数据模型中包含的多种数据模型中每一种数据模型的所述ETL元数据生成相应的ETL配置信息,并用于根据每一种数据模型中生成的所述ETL配置信息形成所述ETL配置文件。
与所述配置文件生成模块16的所述编译模块17用于将生成的ETL配置文件编译成可执行ETL JOB。
本发明所述的基于元数据的ETL实现方法及系统具有以下几点有益效果:
1、本发明中以元数据为基础,为企业的数据仓库提供了最基础的数据描述和定义,例如:数据源定义、目标定义、转换规则等;同时元数据还包含关于数据含义的信息等等,大大提高了ETL管理效率,为数据仓库的发展和使用提供了方便;
2、在本发明所述的基于元数据的ETL实现方法,从ETL需求的转换、ETL元数据的模型化、生成ETL的配置文件到最后的编译生成可执行Job,每个环节都相互联系,若某一个环节的形成过程或配置的元数据出现异常,都将导致下一个环节的出错,即在整个过程中,任一个环节出错立即就能知道,有效地解决了使用ETL工具时只能完全开发之后才能查错的技术缺陷;
3、在本发明所述的基于元数据的ETL实现方法中,通过形成的元数据,自动生成ETLJOB,规范了整个ETL开发流程。将传统的ETL开发过程转化为一种量化的过程,极大提高了开发效率。规范化的元数据模型可以很清晰地展现ETL过程,方便开发人员梳理与检查当前拟定的ETL流程,加深开发人员对ETL需求的理解,帮助开发人员找到最优的ETL设计方案,确保最终得到的ETL Job执行准确且高效。
综上所述,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (10)
1.一种基于元数据的ETL实现方法,其特征在于,包括:
获取预先编写的ETL需求;
令所述ETL需求按照元数据转换规则形成ETL元数据;
将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据;
根据所述ETL元数据生成ETL配置文件;
将生成的ETL配置文件编译成可执行ETL JOB。
2.根据权利要求1所述的基于元数据的ETL实现方法,其特征在于:所述ETL需求包括需处理的数据源信息、处理后的数据结果样式、及数据处理方式。
3.根据权利要求1所述的基于元数据的ETL实现方法,其特征在于:所述ETL元数据包括ETL过程元数据和ETL过程明细元数据;
其中,所述ETL过程元数据用于实现数据抽取、代码映射、数据清洗、数据转换、数据聚合、及数据加载;
所述ETL过程明细元数据用于存储数据抽取明细元数据、代码映射明细元数据、数据清洗明细元数据、数据转换明细元数据、数据聚合明细元数据、及数据加载明细元数据。
4.根据权利要求3所述的基于元数据的ETL实现方法,其特征在于:令所述ETL需求按照元数据转换规则形成ETL元数据的步骤包括:
根据所述ETL需求形成至少一个ETL单元;
根据所述ETL单元形成所述ETL过程元数据;
根据所述ETL过程元数据形成所述ETL过程明细元数据。
5.根据权利要求1或3所述的基于元数据的ETL实现方法,其特征在于:预先创建的ETL元数据模型包括多种数据模型,即包括ETL过程元数据模型、数据抽取元数据模型、代码映射元数据模型、数据清洗元数据模型、数据转换元数据模型、数据聚合元数据模型、以及数据加载元数据模型。
6.根据权利要求5所述的基于元数据的ETL实现方法,其特征在于:根据所述ETL元数据生成ETL配置文件的步骤包括:
分别根据所述ETL元数据模型中包含的多种数据模型中每一种数据模型的所述ETL元数据生成相应的ETL配置信息;
根据每一种数据模型中生成的所述ETL配置信息形成所述ETL配置文件。
7.根据权利要求1或3所述的基于元数据的ETL实现方法,其特征在于:预先创建的ETL元数据模型的具体内容包括:所属ETL名称、ETL元数据代码、ETL流程顺序、及所述ETL过程明细元数据。
8.根据权利要求1所述的基于元数据的ETL实现方法,其特征在于:将所述ETL元数据导入预先创建的ETL元数据模型以存储所述ETL元数据的步骤包括:
标准化所述ETL元数据;
将标准化后的所述ETL元数据导入预先创建的ETL元数据模型。
9.根据权利要求1所述的基于元数据的ETL实现方法,其特征在于:将生成的ETL配置文件编译成可执行ETL JOB的步骤包括:
编译所述ETL配置文件;
根据编译后所述ETL配置文件生成可执行的ETL JOB。
10.一种基于元数据的ETL实现系统,其特征在于,包括:
编写模块,用于预先编写ETL需求;
创建模块,用于预创建ETL元数据模型;
与所述编写模块连接的获取模块,用于从所述编写模块中获取预先编写的ETL需求;
与所述获取模块连接的ETL元数据形成模块,用于令所述ETL需求按照元数据转换规则形成ETL元数据;
分别与所述创建模块和所述ETL元数据形成模块连接的数据导入模块,用于将所述ETL元数据导入预创建的ETL元数据模型以存储所述ETL元数据;
与所述数据导入模块连接的配置文件生成模块,用于根据所述ETL元数据生成ETL配置文件;
与所述配置文件生成模块的编译模块,用于将生成的ETL配置文件编译成可执行ETLJOB。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510155483.7A CN104778236A (zh) | 2015-04-02 | 2015-04-02 | 一种基于元数据的etl实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510155483.7A CN104778236A (zh) | 2015-04-02 | 2015-04-02 | 一种基于元数据的etl实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104778236A true CN104778236A (zh) | 2015-07-15 |
Family
ID=53619700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510155483.7A Pending CN104778236A (zh) | 2015-04-02 | 2015-04-02 | 一种基于元数据的etl实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778236A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021624A (zh) * | 2016-07-21 | 2016-10-12 | 中国农业银行股份有限公司 | 一种etl模型生成方法及装置 |
CN106940716A (zh) * | 2017-03-13 | 2017-07-11 | 济南浪潮高新科技投资发展有限公司 | 一种数据处理方法、装置及系统 |
CN107315726A (zh) * | 2017-07-12 | 2017-11-03 | 广东奡风科技股份有限公司 | 一种基于Excel的大数据ETL全过程定义的方法 |
CN107784026A (zh) * | 2016-08-31 | 2018-03-09 | 杭州海康威视数字技术股份有限公司 | 一种etl数据处理方法及装置 |
CN109635023A (zh) * | 2018-11-13 | 2019-04-16 | 广州欧赛斯信息科技有限公司 | 基于etl的轻量化自定义源数据分解读取系统和方法 |
CN109947746A (zh) * | 2017-10-26 | 2019-06-28 | 亿阳信通股份有限公司 | 一种基于etl流程的数据质量管控方法和系统 |
CN110765196A (zh) * | 2019-10-25 | 2020-02-07 | 四川东方网力科技有限公司 | 生成并执行etl任务的方法及设备 |
CN111651507A (zh) * | 2020-04-16 | 2020-09-11 | 杭州半云科技有限公司 | 一种大数据加工方法及系统 |
CN111767267A (zh) * | 2020-06-18 | 2020-10-13 | 杭州数梦工场科技有限公司 | 元数据处理方法、装置、电子设备 |
US11379467B2 (en) * | 2016-09-22 | 2022-07-05 | Hartford Fire Insurnace Company | System for uploading information into a metadata repository |
CN114880385A (zh) * | 2021-07-27 | 2022-08-09 | 云南省地质环境监测院(云南省环境地质研究院) | 一种通过自动组合流程接入地质灾害数据的方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364240A (zh) * | 2008-10-14 | 2009-02-11 | 杭州华三通信技术有限公司 | 元数据管理方法及装置 |
US20090254570A1 (en) * | 2008-04-07 | 2009-10-08 | Kabushiki Kaisha Toshiba | Video server and file management method |
CN101770461A (zh) * | 2008-12-31 | 2010-07-07 | 中国移动通信集团黑龙江有限公司 | 数据处理方法及处理系统 |
CN102902750A (zh) * | 2012-09-20 | 2013-01-30 | 浪潮齐鲁软件产业有限公司 | 一种通用的数据抽取转换方法 |
CN103942245A (zh) * | 2014-02-19 | 2014-07-23 | 浪潮软件股份有限公司 | 基于元数据的数据抽取方法 |
CN104462243A (zh) * | 2014-11-19 | 2015-03-25 | 上海烟草集团有限责任公司 | 一种结合数据校验的etl调度系统及方法 |
-
2015
- 2015-04-02 CN CN201510155483.7A patent/CN104778236A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090254570A1 (en) * | 2008-04-07 | 2009-10-08 | Kabushiki Kaisha Toshiba | Video server and file management method |
CN101364240A (zh) * | 2008-10-14 | 2009-02-11 | 杭州华三通信技术有限公司 | 元数据管理方法及装置 |
CN101770461A (zh) * | 2008-12-31 | 2010-07-07 | 中国移动通信集团黑龙江有限公司 | 数据处理方法及处理系统 |
CN102902750A (zh) * | 2012-09-20 | 2013-01-30 | 浪潮齐鲁软件产业有限公司 | 一种通用的数据抽取转换方法 |
CN103942245A (zh) * | 2014-02-19 | 2014-07-23 | 浪潮软件股份有限公司 | 基于元数据的数据抽取方法 |
CN104462243A (zh) * | 2014-11-19 | 2015-03-25 | 上海烟草集团有限责任公司 | 一种结合数据校验的etl调度系统及方法 |
Non-Patent Citations (1)
Title |
---|
栾晓宇: "基于元数据驱动的企业级数据仓库系统", 《计算机系统应用》 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021624B (zh) * | 2016-07-21 | 2019-07-09 | 中国农业银行股份有限公司 | 一种etl模型生成方法及装置 |
CN106021624A (zh) * | 2016-07-21 | 2016-10-12 | 中国农业银行股份有限公司 | 一种etl模型生成方法及装置 |
CN107784026A (zh) * | 2016-08-31 | 2018-03-09 | 杭州海康威视数字技术股份有限公司 | 一种etl数据处理方法及装置 |
CN107784026B (zh) * | 2016-08-31 | 2021-08-20 | 杭州海康威视数字技术股份有限公司 | 一种etl数据处理方法及装置 |
US20220292078A1 (en) * | 2016-09-22 | 2022-09-15 | Hartford Fire Insurance Company | System for uploading information into a metadata repository |
US11681685B1 (en) * | 2016-09-22 | 2023-06-20 | Hartford Fire Insurance Company | System for uploading information into a metadata repository |
US20230169065A1 (en) * | 2016-09-22 | 2023-06-01 | Hartford Fire Insurance Company | System for uploading information into a metadata repository |
US11580096B2 (en) * | 2016-09-22 | 2023-02-14 | Hartford Fire Insurance Company | System for uploading information into a metadata repository |
US11379467B2 (en) * | 2016-09-22 | 2022-07-05 | Hartford Fire Insurnace Company | System for uploading information into a metadata repository |
CN106940716A (zh) * | 2017-03-13 | 2017-07-11 | 济南浪潮高新科技投资发展有限公司 | 一种数据处理方法、装置及系统 |
CN107315726A (zh) * | 2017-07-12 | 2017-11-03 | 广东奡风科技股份有限公司 | 一种基于Excel的大数据ETL全过程定义的方法 |
CN109947746B (zh) * | 2017-10-26 | 2023-12-26 | 亿阳信通股份有限公司 | 一种基于etl流程的数据质量管控方法和系统 |
CN109947746A (zh) * | 2017-10-26 | 2019-06-28 | 亿阳信通股份有限公司 | 一种基于etl流程的数据质量管控方法和系统 |
CN109635023B (zh) * | 2018-11-13 | 2021-01-15 | 广州欧赛斯信息科技有限公司 | 基于etl的轻量化自定义源数据分解读取系统和方法 |
CN109635023A (zh) * | 2018-11-13 | 2019-04-16 | 广州欧赛斯信息科技有限公司 | 基于etl的轻量化自定义源数据分解读取系统和方法 |
CN110765196A (zh) * | 2019-10-25 | 2020-02-07 | 四川东方网力科技有限公司 | 生成并执行etl任务的方法及设备 |
CN111651507A (zh) * | 2020-04-16 | 2020-09-11 | 杭州半云科技有限公司 | 一种大数据加工方法及系统 |
CN111651507B (zh) * | 2020-04-16 | 2023-10-10 | 杭州半云科技有限公司 | 一种大数据加工方法及系统 |
CN111767267A (zh) * | 2020-06-18 | 2020-10-13 | 杭州数梦工场科技有限公司 | 元数据处理方法、装置、电子设备 |
CN111767267B (zh) * | 2020-06-18 | 2024-05-10 | 杭州数梦工场科技有限公司 | 元数据处理方法、装置、电子设备 |
CN114880385A (zh) * | 2021-07-27 | 2022-08-09 | 云南省地质环境监测院(云南省环境地质研究院) | 一种通过自动组合流程接入地质灾害数据的方法及装置 |
CN114880385B (zh) * | 2021-07-27 | 2022-11-22 | 云南省地质环境监测院(云南省环境地质研究院) | 一种通过自动组合流程接入地质灾害数据的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104778236A (zh) | 一种基于元数据的etl实现方法及系统 | |
CN107622103B (zh) | 管理数据查询 | |
CN106104591B (zh) | 映射带键实体的属性 | |
She et al. | BigDAWG polystore query optimization through semantic equivalences | |
CN102546247B (zh) | 一种适用流式处理的大规模数据连续分析系统 | |
US20170185663A1 (en) | Interpreting relational database statements using a virtual multidimensional data model | |
CN104090962B (zh) | 面向海量分布式数据库的嵌套查询方法 | |
US20150234895A1 (en) | Apparatus and Method for Processing Distributed Relational Algebra Operators in a Distributed Database | |
Liang et al. | Express supervision system based on NodeJS and MongoDB | |
CN103678589B (zh) | 一种基于等价类的数据库内核查询优化方法 | |
CN107016501A (zh) | 一种高效的工业大数据多维分析方法 | |
US11893026B2 (en) | Advanced multiprovider optimization | |
CN103262076A (zh) | 分析数据处理 | |
CN104462351B (zh) | 一种面向MapReduce范型的数据查询模型与方法 | |
US20100235344A1 (en) | Mechanism for utilizing partitioning pruning techniques for xml indexes | |
CN105183880A (zh) | 一种哈希连接的方法及装置 | |
CN102169491B (zh) | 一种多数据集中重复记录动态检测方法 | |
WO2023040373A1 (zh) | 一种跨源异构数据智能可视化分析展示方法和设备 | |
Binnig et al. | SQLScript: Efficiently analyzing big enterprise data in SAP HANA | |
CN106445913A (zh) | 基于MapReduce的语义推理方法及系统 | |
CN110580144A (zh) | 一种通过给页面控件添加查询运算符实现的通用查询方法 | |
US11455308B2 (en) | Partition aware partial query processing | |
Unbehauen et al. | SPARQL update queries over R2RML mapped data sources | |
Solanke et al. | Migration of relational database to MongoDB and Data Analytics using Naïve Bayes classifier based on Mapreduce approach | |
US20190311058A1 (en) | Partition aware partial query processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150715 |
|
RJ01 | Rejection of invention patent application after publication |