开源ETL工具kettle系列之建立缓慢增长维
副标题[/!--empirenews.page--]
摘要本文主要介绍使用kettle 来建立一个Type 2的Slowly Changing Dimension 以及其中一些细节问题 Kettle 简介Kettle 是一个强大的,元数据驱动的ETL工具被设计用来填补商业和IT之前的差距,将你公司的数据变成可增长的利润. 本系列文章主要介绍如下几点: Kettle 文档最好的kettle教程就在你身边,我们下载的kettle-version. zip 文件里其实已经包括了非常多的示例和文档,在你的kettle文件夹下,docs 文件夹下包含了所有的文档,samples文件夹下包含了一些示例,后面的介绍中一部分示例都来自kettle自带的这个示例文件夹下。docs里面最主要的是Spoon-version-User-Guide. zip,里面记录了kettle 的技术性文档,包括支持的操作系统,数据库平台,文本格式,图形化的界面,其中最重要的是所有的转换对象(Transformation Core Objects) 和Job对象(Job Core Objects) 的解释,包括截图和每一个参数的解释。 Kettle与Slowly Changing Dimension我们使用kettle自带的samples文件下的示例,来看kettle如何支持SCD的。 1. 最左边的是产生测试数据,如果是实际环境的话应该是连接真实的数据库,产生的真实数据格式打开如下: 2. 第二个步骤Dummy 就是把前面的数据合并起来,Dummy 步骤本身不做任何事情,不过由于前面有四个输入指向它,所以它在第二步的作用等同于数据合并。 3. 第三个步骤是取得系统参数(get system date),它取得当前系统时间的日期,并且格式是当天的 00:00:00,如图所示 4. 最后一步是真正的重点,执行Dimension Lookup / Update 步骤来更新和插入数据,以此来实现Type 1,2,3 的不同Slowly Changing Dimension 图4 图5 在开始介绍Dimension Lookup / Update 之前,先看看在执行这个步骤之前的输入和输出: 输入: 输出: 注意: 上图中所使用的是mysql 5 数据库做测试,所以数据类型一栏都是mysql 的数据类型,如果你使用其他数据库,可能数据类型会有所不同,其中的datetime 的格式 yyyy/mon/day hh:mm:ss:sss 我们再来看看当我们第一次运行以后出现的数据输出: 注意上图中所有的 version 值都是 1 Date_from 都是 1900/01/01 00:00:00.000 Date_to 都是 2199/12/31 23:59:59.000 这两列都是根据图4下面部分定义的 Id,name,firstname 都是测试数据,从前面步骤来的. 然后我们修改图1中generate row 的部分数据(一共两条),并且只有测试数据变了的情况下,我们再次运行转换,查看数据输出: 注意到其中customer_tk 并没有什么变化,仍然在产生类似序列的输出 Version 的值中出现了 2,并且只有在我们改变的数据中 在出现了改变的行中的date_from 变成了2007/11/28/ 00:00:00.000 在出现了改变的行中原来数据的date_to 变成了 2007-11-28 00:00:00.000 Id 列没有变化,(变化了也没用,图5中的中间部分 Field 选项卡没有选id) Name,firstname 有两个值变了(我们手工改变的) Dimension Lookup / Update 参数解释(编辑:瑞安网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |