域名 www.xgndata.com 变更为 www.pentahochina.com
域名 www.xgndata.com 变更为 www.pentahochina.com[@more@]
使用 kettle 做信息采集
最近在使用 Kettle 从一些分类信息网站采集数据,如这里的赶集网插件。基于这些采集插件,我们开发了一个教育行业的应用网站,这个网站可以从不同的分类信息网站、BBS采集教育行业的信息。[@more@]
关于 kettle 中文稳定版
Kettle 是一个优秀的开源 ETL 工具,用过它的开发人员都会为它的功能强大而折服,甚至成为了 Kettle Fans。 和很多流行开源软件一样,Kettl 不断增加新的功能,但同时也不断引入新的 bug,因此一直没有一个稳定的对中文友好的版本,这也是很多开发人员烦恼的事情。 在我们这几年从事 kettle 的开发和应用实施工作中,也做了很多 bug 修订和二次开发工作,有的汉化和修订也提交到了 kettle 的 trunk 分支中。 为了我们本身工作的需要,也为了满足 kettle fans 对中文稳定版的需要,我们计划开发 kettle 中文稳定版。 该版本以
使用 kettle 群发短信
在上一篇文章里描述了如何用kettle 群发邮件,群发邮件相对比较简单,这次我们来看看怎么用 kettle 群发短信。[@more@]本文内容详见:http://www.xgndata.com/biforum/topic-179-1.html本文所需软件从这里下载
kettle 实用功能之三 ---- 使用 kettle 群发动态内容的邮件。
有个客户是做外贸生意的,经常需要群发邮件,要求邮件里商品名称,收信人称谓等内容是动态的。他一直找不到一个合适的免费的群发工具,于是我推荐他使用了 kettle,并帮他画了一个流程来群发邮件。(这位朋友不是IT 人员,不会开发,只会使用 Microsoft Office )。(转载请注明:http://pdi.itpub.net)在我做的群发邮件流程里,还用到了我以前开发的一个插件(就是把文件内容作为字段加入到数据流)。 发送邮件流程,插件,kettle 我都集中在一起发布了。大家可以从 这里下载 该 kettle 的版本(该版本是基于 kettle 3.2 stable,修改了ke
制作 kettle 插件时,在 processRow 方法里的几个常用方法说明:
制作 kettle 插件时,在 processRow 方法里的几个常用方法说明:(转载请注明:http://pdi.itpub.net)//复制输入行的元数据,并设置为输出行的元数据。RowMetaInterface outputRowMeta = getInputRowMeta().clone();//构造一个新的输出列。方法一RowMetaInterface rowMeta = new RowMeta();Object[] rowData = new Object[1];int valtype = ValueMeta.getType("String");ValueMetaInterface valueMeta = new ValueMeta( “FieldName1”, valtype); valueMeta .setLength(-1);rowMeta.addValueMeta(valueMeta);RowMetaAndData met
kettle modified javascript 步骤的一个例子
例子里用到的 org.htmlparser.Parser 是一个html 的解析器,可以在 sourceforge 上下载。这个例子使用 org.htmlparser.Parser 包来解析一个 html 格式的字符串,要解析的 html 字符串保存在conntentOld 字段里。解析过程去除了 html 格式里所有标签,并将结果保存在 content 字段里。注意事项:1. 需要事先将htmlparser.jar包 放在kettle 的 libext 目录,kettle 在启动时会自动加载libext 目录下的所有 jar 包。2. modified java script 步骤要选中 compatibility mode,并将 content 设置为输出的字段。代码如下:[@more@]var parser =
kettle 实用小功能(二),读取一个目录下文本文件的内容
kettle 的实用小功能 中介绍了如何批量读取二进制文件的内容,这里说一下批量读取文本文件的方法。第一步也是使用 Get File Names 步骤,根据正则表达式来获取一个路径下所有指定的文件名。第二步骤使用 modified javascript 脚本步骤,来读取这些指定的文本文件,脚本如下。[@more@]//code beginfile = new Packages.java.io.File(filename.getString()); fileInputStream = new Packages.java.io.FileInputStream(file);reader = new Packages.java.io.InputStreamReader(fileInputStream);var cbuf = Packages.com.xgn.ketl.trans.step
微软对大企业下手了
看了这个新闻 http://tech.sina.com.cn/it/2010-04-22/10024094959.shtml 不禁有些感慨,微软的东西的确好用,但好用的东西是要花钱的。(转载请注明 http://pdi.itpub.net)微软的市场手段也很高明,先是纵容盗版,培养人们的消费习惯,熟悉他的软件,依赖他的软件,待到时机成熟时,就要向企业敛钱了。 除了微软,很多商业软件也是这么做的,这种方式就像撒种子一样。开始是通过各种渠道,如免费发放试用版,纵容盗版,让用户尝试使用软件,体会到软件带来的便利。等到用户操作习惯了,依赖上这个软件,商业软件们就开始收割了。相信
pdf/word/ppt/... 文件读取插件 - 输入步骤
最近需要做一个 Common File Reader 的 kettle 插件,希望这个插件可以读取例如 PDF, WORD, PPT, WPS 等常见格式文件的内容,今天已经实现了第一步,读取 PDF 的功能。该插件是一个输入步骤, 它可以将读取到的 PDF 文件的每一页作为一行输入记录。下面是一个比较典型的应用例子: [@more@]这是一个简单的文件检索流程,可以用于小批量的文件检索,检索的输入,输出和规则都可以自定义,在这个例子里,我们可以这样定义:输入1 是一个目录,通过一个表达式(如 .*.pdf$)来指定只读取一个目录下的所有扩展名是pdf 的文件。输入2 是一个 exc
kettle 里的 NULL 和空字符串
在 kettle 里, NULL 和空字符串是不加区别的,就是说如果往数据库里插入一个空字符串,你会发现数据库里插入的是 NULL,这对 ORACLE 的 DBA 的来说可能是司空见惯的事情,但对于 SqlServer 和 Mysql 的 DBA 来说可能就是无法接受的事情。[@more@]最近在帮助一个使用的 Mysql 数据库的客户,修改 kettle 里的这个问题,在修改之前,觉得这个一个影响很大的问题,所以想在先到论坛看看大家对这个问题怎么看。官方论坛里对这个问题争论的比较激烈,下面是论坛里有关这一问题的讨论。http://forums.pentaho.org/showthread.php?t=68478
mondrian output 的插件和代码现在可以下载了。
mondrian output 的插件和代码现在可以下载了。这个插件可以把 mondrian 的查询结果以 excel 和 chart 的方式展现出来, 并放在 kettle 的结果文件里,继续处理,如作为邮件附件等。[@more@]src:http://wiki.pentaho.com/download/attachments/1049091/mondrianoutput_src.zip?version=1bin:http://wiki.pentaho.com/download/attachments/1049091/mondrian_output_plugin_distrib.zip?version=1或http://www.xgndata.com/download.htm
kettle 里的 variables, arguments, 和 parameters
kettle 3.2 以前的版本里只有 variable 和 argument, 所以在 GUI 上对这两个单词的汉化,分别是变量和参数。但是在 kettle 3.2 中,又引入了 parameter 概念http://jira.pentaho.com/browse/PDI-1381, [@more@]kettle 里新加的 parameters 全称是Named parameters,通过 Named parameters 是相对于以前的 Positional arguments 而言的,以前的 Positional arguments 就是最多能设置的 10 个命令行参数,通过在命令行参数的位置来区别。 而 Named parameters, 可以通过名称来区别,并可以在命令行中通过 /param:name=value 的方式设
1 to N 数据同步和双向数据同步
最近在做两个数据同步的项目。第一个数据同步项目要求一个系统向多个系统同步,有些类似于 SqlServer 订阅发布的概念,不过一个源和多个目标的数据库的结构差别很大,是不同的应用系统。第二个数据同步项目要求在两个异构数据库系统之间进行双向同步。[@more@]对于第一个项目的需求,我们继续使用了以前开发的 kettle 数据同步插件,但因为原来的插件只支持1 to 1的同步,不支持1 to N 的同步。我 们又对这个插件做了扩展,增加了同步序号这个输入项,通过这个输入项,可以指定当前的同步是第几个同步。如下图:第二个项目由于时间的关系,
表增量输入步骤
增量抽取是应用项目中很常见的一种需求。在本 blog 前面的文章中对增量抽取的几种实现方式有比较详细的说明。这里要介绍的表增量输入步骤就是基于触发器这种方式以 kettle 插件的方式实现的。对于各类支持触发器的数据库,都可以使用这个插件来进行增量抽取。[@more@]基于触发器的增量抽取的主要思路就是对要增量抽取的数据表建立触发器来监控表的增、删、改操作。每当有对表的上述操作,操作影响到的记录或者记录的主键都会被保存到一个中间表中(我们称这个中间表为影子表,因为每个表都要有一个中间表来记录下对这个表的历史操作,象表
kettle 的 jasper report 插件
曾经做过一个 kettle 的 japser report 的插件,通过该插件可以给 kettle 增加报表的功能,它可以将 kettle 处理过的数据流转换为报表。在最近的项目中又用到了该插件,并做了一些改进,下面详细介绍一下这个 jasper report 插件。[@more@]下图是插件的界面截图:1. 报表定义文件:jrxml 文件名称,文件名里可以包括 kettle 变量。2. 输出文件:要输出的报表文件名。3. 输出格式:要输出的报表的格式,可以是 excel,pdf,html等格式。4. 参数: 输入报表里要用到的参数名称和参数值,参数值里可以包括 kettle 变量,如图中的 ${YESTERDAY
kettle 的实用小功能
kettle 除了作为 ETL 工具外,还有很多数据处理方面的实用功能,本文介绍几个实用的小功能。1. 文件批量入库该功能可以将一个目录下的全部或部分文件加载到数据库中。流程图:[@more@]第一步: “获取文件名” 步骤获取一个目录下的文件名,使用一个正则表达式来指定文件名。如上图,指定了 E:/opensource/kettle-trunk/ui/images 目录下所有以 .png 结尾的文件名。在这个步骤里创建了下面几个字段来描述所有获取的文件:FILENAME, SHORT_FILENAME, PATH, TYPE, EXISTS, ISHIDDEN, ISREADABLE, ISWRITEABLE, LASTMODIFIEDTIME, SIZE, EXTE
Mondrian license 要从 CPL 改到 EPL 了
Mondrian 3.1 发布后,Mondrian的 license 就要从 CPL 改到 EPL 了,这两个 license 差不多,EPL 是基于CPL 的。 [@more@]不同之处在于 CPL 是由 IBM 支持的,EPL 是 ECLIPSE 支持的。另外在 CPL 里有一个版权诉讼的条款,EPL 将这个条款取消了,所以 EPL 是一个更宽松的 license 。
使用 mondrian output job entry 输出图表
根据开发计划和项目的需要,最近又为 mondrian output job entry 增加了输出图形的功能,目前这个插件支持从 MDX 查询生成 excle 表格和图形,图形以图片的方式保存,并嵌入到excel 的工作簿中。[@more@]如果要输出带有图形的表格,至少要使用两次 mondrian output job entry,第一次是输出图形文件,第二次输出 excel 表格,同时将图形文件嵌入到表格内。 作业设计流程如下: 1. 在作业流程里加入一个 mondrian output job entry ,在这个作业项里输入相应的 mdx 查询,在 chart 选项卡里设置要输出的图形的名称,高度,宽度,是否显
使用 Pentaho 工具创建维度报表的过程
本文简要介绍了如何使用 Pentaho 的相关工具在关系型数据库基础上建立dimension 和cube, 以及如何利用这些cube产生一个报表或图表。 首先要在数据库里建立维度表和事实表。 维度表和事实表就是数据库里普通的物理表, 我们可以使用create table … 这样的语句来建立, 也可以使用工具建立。常见的维度包括时间,区域,产品等。[@more@]如时间维度表可以包括 date_tk, year, quarter, month, week, day_of_month, day_of_year 等字段,其中 date_tk 是主键。 区域维度表可以包括 region_tk, country, province, city, district等字段,其中