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

标签: | 发表时间:2021-05-25 15:48 | 作者:
出处:http://www.cnitblog.com

--  商业智能平台研究:ETL之metadata

元数据的定义就是:描述数据的数据,你非要问什么描述元数据,还是元数据本身,UML中也有这种概念,只不过是描述的对象不一样罢了。

 

    让我们解释的更加通俗易懂一些吧,在javaSE中也有metadata的概念,最早的就算是JavaDoc了,在5.0之后,Annotation就是大量的使用metadata了,这是关于源代码的数据,具体来说就是关于Java的类、方法、字段等关联的附加数据。这些数据可以被Java的编译器或者其它工具(比如Java IDE 象eclipse+junit一样)来发现和使用。junit在4.0后也使用了Annotation也算是metadata的一种应用。可见metadata并不是什么高不可攀的技术,我们时刻都在使用。

 

    再来看看metadata在BI系统上的定义吧,元数据(Metadata)是关于数据、操纵数据的进程,以及应用程序的结构、意义的描述信息,其主要目标是提供数据资源的全面指南。元数据是描述数据仓库内数据结构和建立方法的数据,可将其按用途分为两类:技术元数据(Technical Metadata)、业务元数据(Business Metadata)和内联映射元数据(Inter-Mapping Metadata)。

    

    技术元数据是存储关于数据仓库系统技术细节的数据,是用于开发和管理数据仓库的数据,主要包括数据仓库结构的描述(各个主题的定义,星型模式或雪花型模式的描述定义等)、ODS层(操作数据存储ODS .Operation Data Storage)的企业数据模型描述(以描述关系表及其关联关系为形式)、对数据稽核规则的定义、数据集市定义描述与装载描述(包括Cube的维度、层次、度量以及相应事实表、概要表的抽取规则)。另外,安全认证数据也作为元数据的一个重要部分进行管理。

业务元数据从业务角度描述了数据仓库中的数据,它提供了介于使用者和实际系统之间的语义层,使得不懂计算机技术的业务人员也能够理解数据仓库中的数据。业务元数据包括以下信息:使用者的业务术语所表达的数据模型、对象名和属性名;访问数据的原则和数据来源;系统所提供的分析方法及公式、报表信息。

 

    内联映射元数据(Inter-Mapping Metadata)实现技术元数据与业务元数据的层间映射,使得信息系统的概念模型与物理模型相互独立,使企业的概念、业务模型重组,以及物理模型的变化相互透明。

 

    内联映射元数据从技术上为业务需求驱动、企业数据驱动的双驱动建设模型提供了重要保证,使信息系统的建设具有更高的灵活性与适应性。

 

    元数据是跟特定的数据对象有关的,换句话说,talend和kettle的元数据就是不一样的。ETL的元数据就和pentaho report 的元数据不一样,因为他们要描述的东西不一样。这些元数据的存储格式可以有多种,可以储存成XML格式的也可以是放在数据库里面的。事实上这两种最通用的,也是可以互补的两种,没有谁比谁重要之说。

 

    metadata储存在repository的地方,我不知道是不是所有的ETL工具都喜欢这么叫.每个repository都会选用数据库来储存,他们都是按照一定的格式,这些格式最后也是可以变成XML形式的.这是看每个工具的支持程度,kettle 就支持导出到XML格式,其他的工具我就不知道了.

 

    具体解释到kettle来说,metadata就是你定义的每一个动作.kettle的repository里面有如下一些表,我没有列出全部,从表的结构看一下kettle的metadata有哪些

1. R_DATABASE R_DATABASE_ATIRIBUTE R_DATABASE_CONTYPE R_DATABASE_TYPE

2. R_JOB R_JOB_HOP R_JOBENTRY R_JOBENTRY_ATIRIBUTE R_JOBENTRY_TYPE

3. R_LOG R_LOGLEVEL

4. R_STEP R_STEP_DATABASE

5. R_TRANS_ATIRIBUTE R_TRANS_HOP R_TRANS_CONDITION

6. R_USER R_VALUE R_PERMISSION

7. R_CLUSTER R_CLUSTER_SLAVE R_SLAVE

8. R_PARTITION R_PARTITION_SCHEMA

 

1 . database的链接信息.在R_DATABASE_TYPE 表里面包含了所有支持的数据库链接信息,一共是25种,算是支持非常的多了.

 

2. 任务设计部分的表,R_JOB_HOP 是指两个数据之间的链接部分, R_JOBENTRY_TYPE 是目前支持的操作种类,一共有27种,包括Transformation , Job , Shell , Mail , SQL ,FTP ,Table exists ,File Exists , JavaScript , Secure FTP , HTTP , Create File , Delete File , Wait for File , Put a file with SFTP , File Compare , BulkLoad into Mysql , Display Msgbox Info , Wait for , Zip file , XSL Transformatio, BulkLoad from Mysql into File , Abort Job , Get mails from POP , Ping a host , Dummy Job Entry .

其中BulkLoad 只跟Mysql有关,我感觉很奇怪,BulkLoad 是数据库批量处理的方式,大型数据库都是支持的,比如oracle就有sqlloader来支持批量处理,其他的大型数据库应该也有吧,而且在transform里面kettle也有oracle的支持,在任务设计的时候就只有mysql的支持,不知道什么原因.

最后一个Dummy Job Entry 就是什么都不做.

 

3. Log记录,loglevel 一共有6种,Nothing at all , Minimal loggin , Basic loggin , Detailed loggin , Debugging , RowLevel(very detailed).根据你自己的需要来选择log的级别.

 

4. 每一步操作的表格与你使用的数据库

 

5. 转换的定义.一共有70种不同的转化,你不会想看到全部列出来的,其中有几种很有用的,比如DimensionLookup , 它的解释就是"在一个数据仓库里更新一个渐变维,或者在这个维里查询信息.

还有基于关键字删除记录,

cuebOutput, 把数据写入一个cube,

从一个excel文件读数据,执行一个sql脚本,调用数据库的储存过程,

OraBulkLoader ,调用oracle 的bulk loader to load data ,(应该是指Oracle的SQLLOADER吧).

ProSAPCONN, 从一个SAP系统取数据.

MergeRows,合并两个数据流, 并根据某个关键字排序. 这两个数据流被比较,以标识相等的、变更的、删除的和新建的记录.

 

    插一句关于merge的概念,从网上copy下来的:

MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。

 

6. 用户与权限.一开始建立的用户有两种,admin和guest ,权限有5种,Read only access , Administrator , Use transformations , Use Jobs , Use schemas .

 

7. pentaho官方网站上面有一个新闻是关于在mysql的Kettle集群新记录:

    最近Kettle集群基于 Amazon Elastic Computing Cloud做了一次测试,单台服务器输出4000 rows/sec ,数据库为MySQL. 如果你发送数据通过sockets从一个master到5个slave servers, 你将获得 5x4000 row inserts/sec。集群的效果非常好.

 

    我个人也做过测试。数据库是oracle 10.2.0.1,内网连接,从一台机器的oracle到本地机器,没有集群,速度也大概是4000 多一点 ,数据量大概是16万。

 

8 . 数据库分区是数据库的高级特性之一,oracle的XE版和Enterprise版本的有一个差别就是XE版不支持分区。

 

    kettle还支持metadata搜索,可搜索的选项包括步骤,数据库连接和注释 ,可见metadata对于ETL的重要性就是它能够更好的管理你的数据,而不只是让你的数据呆在数据库里面。kettle对与数据库的元数据管理并不是很好,所谓数据库的元数据就比如数据库中表的名字,每一个column的信息,column的长度,每一个表的constrain,index等,而只有提供这些信息的管理才能够将ETL过程做的更好。下一篇介绍ETL质量控制的时候会看到oracle warehouse builder 对于这些数据管理是多么的强大,目前kettle的能力还不能算是非常的强大的。

 

    pentaho平台本身还有一种metadata , 在官方主页上是这么写的:

 

    pentaho metadata的能力是让管理员定义一个抽象层来显示数据库信息和商业流程,管理员用关系型数据库的表来表现相互之间的关系,为了复杂和含义模糊的数据库表和列而创建商用术语,为特性用户而设定权限参数,指定默认的数据格式,为多种语言部署提供翻译,商业用户可以使用pentaho新的ad hoc query能力查询他们想要的报表,比如订单的数量和按地区排序的客户开销,SQL可以自动取得这些信息。

 

    数据仓库的建模也需要用到metadata, oracle的数据仓库建模就是用的一种叫 Common Warehouse Metamodel 的metadata , CWM提供一个数据仓库的标准让不同的厂商集成和管理他们的数据,CWM建立在开发的标准XMI(XML for Metadata interchange) XML 和 UML2 作为建模语言。CWM 用UML2 定义一组核心类,这些类分作package(或者叫做子模型submodels),每一个提供一个特定的数据仓库的domain , 比如 Relational , OLAP ,Transformation , CWM 提供一个强大的数据模型来实现数据仓库的Extraction , transformation , loading , integration and analysis ,没有一个单独的模型能够满足各种应用程序和开发工具的需求,但是CWM 为这些工具提供特定的扩展,它被设计用来支持关于metadata的快速开发,使用户能够通过扩展来满足他们的需求。


相关 [etl metadata pentato] 推荐:

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

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

ETL概述(原创)

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

美图离线ETL实践

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

使用 metadata-extractor 解析图片 exif 元数据信息

- - ITeye博客
//光圈F值=镜头的焦距/镜头光圈的直径. System.out.println("光圈值: f/" + directory.getString(ExifSubIFDDirectory.TAG_FNUMBER) );. System.out.println("曝光时间: " + directory.getString(ExifSubIFDDirectory.TAG_EXPOSURE_TIME)+ "秒" );.

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.