使用 Mondrian Output 作业项创建多维报表
Mondrian Output 作业项是我们最近开发的一个 Kettle 作业项, 该作业项的主要功能就是执行 MDX 查询, 并将结果生成一个 Excel 报表.Kettle 的转换里有一个 Mondrian Input 步骤,这个步骤可以执行一个 MDX 语句,并将产生的数据输出到下一个步骤。Mondrian Output 作业项的功能类似于 Mondrian Input 步骤。不过它是一个作业项, 它可以执行一个 MDX 语句,并将 Modrian 执行的结果输出到一个 Excel 文件中,同时该 Excel 文件将被加入到结果文件中,由后续的作业项来处理,如 Mail 作业项可以将该文件作为附件发送。Mondrian Output 作业项
一个小型 BI 项目的总结
最近在做一个小型 BI 项目,项目的工期很紧,现在项目一期已经接近尾声,趁这个机会做个项目总结.项目背景: 该项目的需求方是一家大型的跨国销售类企业, 在世界各地都有销售网点, 每个销售网点会将当日销售/库存等数据上报到业务系统. 数据分析人员定期(日/周/月/季)分析这些数据,并结合其它来源的数据(如销售目标,订单等), 形成相应的报表,用于管理者的决策支持.具体需求: 1. 构建 Data Mart , 根据目前在用的报表( Excel 格式), 设计出相应的Fact Table 和 Dimension Table. 2. 每天将业务系统中的数据抽取到Fact Table中, 保证Fact T
PDI 的帮助都移到了 wiki 上
以前 Spoon 的帮助都是以 PDF 文件提供的, 现在都移到了 wiki 上, 这样用户可以直接在 wiki 上发评论: http://wiki.pentaho.com/display/EAI/Spoon+User+Guide[@more@]3.1 里所有的步骤的帮助: http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Steps3.1 里所有的作业项的帮助: http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Job+Entries
PDI 对 PostGreSQL 的一些特殊处理
PostGreSQL 和其它数据库(SQLServer, Oracle等)有一个很大的不同: 就是写数据时,如果有主键冲突或其它错误,PostGreSQL 会等待事务结束,错误语句后面的语句都将被忽略.[@more@]所以 PDI 在向 PG 数据库写数据时,关闭了批量提交,,这样做影响了性能. 不过 PDI 通过 setSavePoint 和 releaseSavepoint 方法尽量来挽回一定的性能损失.有同样问题的还有 GP (记不清了好像叫 GreePalm) 数据库.
关于 Pentaho 的配置文件 pentaho.xml
关于 Pentaho 的配置文件 Pentaho 的配置文件 pentaho.xml 包括了 Pentaho 平台的系统级的设置在 Pentaho 1.6 以前的版本中配置文件 pentaho.xml 位于${solutionsdir}/system 目录下, 配置文件的目录和名称都是不可改变的.[@more@]在 1.6 和以后的版本中,加入了系统配置文件名参数. 当 Pentaho 平台启动的时候, 首先会找一个叫 PENTAHO_SYS_CFG_PATH 的命令行参数, 如果找到了这个参数, 平台就用这个参数的值作为系统配置文件,如果没有找到这个参数, 系统会找到默认的 ${solutionsdir}/system/pentaho.xml 文件作为配置文件. 有时候系统开
Pentaho 使用中发现的几个问题和解决方法
1: Caused by: org.apache.commons.vfs.FileSystemException: Multiple providers registered for URL scheme "solution"原因: pentaho-vfs.jar版本冲突 解决方法: remove the pentaho-vfs.jar from lib directory (and application.xml declaration)..[@more@]2: org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'myDS': java.sql.SQLException: Could not retrieve datasource via
最近做了一个 PDI 的 jasperreport 的插件
通过 PDI 处理过的数据可以直接出 Jasper 的报表了.cheer![@more@]
一种特殊文本格式的输入
"1"|"99A1026164***01"|"1"|"张学友"|"香港市"|"200063"|"张学友"|"个人"|"00****72"|"99A102616400"|"xx证券"|"66800000030005119"|"身份证"|"313705197310******"|"133****0369"|""|""|""|"寄送"|""|""|""|""|""|""|""|"20080129"|"200801
Kettle 在应用中遇到的一些问题和解决方法
本文主要总结了 Kettle 在中文环境应用中遇到的一些问题, 问题列表还会不断增加. 这些问题都是 kettle fans 提供的,欢迎参与讨论.问题1:从excel 中抽取数据,插入到oracle 9 数据库中,报下面的错误.2008/06/25 13:30:57 - 插入更新数据表.0 - Insert row: ![field1=1.3965E8, field2=1,798, field3=2002/05/27 00:00:00.000]2008/06/25 13:30:57 - oracl - ERROR : java.sql.SQLException: ORA-01722: 无效数字2008/06/25 13:30:57 - oracl - ERROR : at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125) [@m
关于 PDI 性能的简单测试
PDI 使用了下面的技术来提高性能:1. 数据库连接池。2. 多线程并发进行数据转换: 转换步骤是并发执行的,使用生产者/消费者的模式,每个步骤由一个线程来执行,当前步骤将一次处理完的数据放在缓存里,由下一个步骤的线程读取并再处理这些数据。[@more@]3. 数据批量装载: 表输出步骤中设置批量装载。4. 对于某些数据库还利用了数据库自身提供的装载工具, 如 Oracle 的 SQLLoader. 在 PDI 3.1 中提供了该功能。5. 集群: 主服务器 (master server) 将大任务分解为多个小任务, 并将要处理的数据通过 soket 发送到从服务器(slave server), 由多个从
pentaho 的框架
这个图就是Pentaho 的框架图:pentaho 的框架图展示了 BI 服务上的主要的组件和他们与外部的接口。BI 服务的中心是解决方案引擎(Solution Engine)。如图所示解决方案引擎位于外部客户端和内部组件层的中间,外部客户端包括 Web浏览器,web服务客户端,系统监控等。客户端的请求首先会被发送到解决方案引擎,再由该引擎转发到相应的一个或多个组件。操作序列(Action Sequence)[@more@]一个操作序列就是一个 XML 文件,它定义了解决方案引擎可以处理的最小的任务。在操作序列 XML 文件里定义了一些操作的序列,每个操作都由特地的 Pentah
关于资源库
资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中。资源库可以是各种常见的数据库,用户通过用户名/密码来访问资源库中的资源,默认的用户名/密码是admin/admin[@more@]资源库并不是必须的,如果没有资源库,用户还可以把转换任务保存在 xml 文件中。如果用户需要创建一个资源库,在资源库的登录窗口(PDI 启动时的第一个窗口)中有 【新建】 按钮,点击该按钮弹出新建资源库窗口,在该窗口中选择一个数据库连接,如果没有事先定义的数据库连接,则还要点击【新建】按钮,来创建一个数据库连接。选择数据
记录集连接步骤
该步骤就是将两个表或记录集进行连接。可选的连接方式有INNER:内连接[@more@]LEFT OUTER:左连接RIGHT OUTER:右连接OUTER:外连接
合并记录步骤
该步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据,该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并。需要设置的参数:[@more@]旧数据来源:旧数据来源的步骤新数据来源。新数据来源的步骤标志字段:设置标志字段的名称,标志字段用于保存比较的结果,比较结果有下列几种。1. “identical” – 旧数据和新数据一样2. “changed” – 数据发生了变化;3. “new” – 新数据中有而旧数据中没有的记录4. “deleted” –旧数据中有而新数据中没有的记录关键字段:用于定位两个数据源中的同一条记录。比较字
行转列步骤
行转列步骤实际上就是生成所谓的透视表(pivoted table)的步骤,在直观上也就是将属于同一组的多行数据变为一行数据。[@more@]分组字段:将所有记录分成不同组的字段名称。关键字段:在一个分组内区分不同记录的字段名称。关键字值:关键字段的值,一般是可以枚举的整数或字符。数据字段:保存实际数据的字段名称目标字段:由关键字段和数据字段组合而成的新字段名称,该字段名称可以自定义。例子:下面的数据人员编码职务选票数104115122206219221可以转换为人员编码第一职务第二职务第三职务145221691对应的设置分组字段:人员编码关键
数据库查询步骤
该步骤可以根据数据流里的数据来查询数据库表里的数据,并得到数据表里的指定字段。查询得到的字段也作为数据流里的字段,并转到下一个步骤。[@more@]需要设置的参数数据库连接:要查询的表所在的数据库连接.查询的表:要查询的表名.表字段:指定用来比较的表里的字段比较操作符:包括 =、 <、 >、 like、between 等操作符流字段1:指定用来比较的流里的字段流字段2:指定用来比较的流里的字段,仅适用于双操作数的操作符,如between。查询表返回的值字段:要获得的查询表里的字段新名称:可以为该字段指定一个新的名称默认值:查询
表输入步骤
表输入是从一个数据库表或数据库视图中获得数据。在表输入步骤里要选择数据库和数据库里的某个表或视图。也可以直接输入SELECT 语句来获得数据。配置窗口中选项说明:[@more@]1 替换脚本脚本里的变量:是否在SQL 语句里可以使用变量。如下面的SQL 语句使用了变量 minID。SELECTf1, f2FROM t1WHERE f1 >= ${minID}2 从步骤插入数据:除变量外,用户输入的SQL 语句在运行时还可以接收其它步骤的运行结果,也就是将其它步骤的运行结果作为一个SQL 语句的参数。如下面的SQL 语句,使用 ?作为接收参数的位置。(语句格式类似于JDBC规范里的
JavaScript 转换步骤
Kettle 里的 JavaScript步骤 是一个非常重要的转换步骤,一般来说其他步骤搞不定的事情,都可以由它来解决。 JavaScript步骤里使用的脚本是 Mozilla 的 Rhino,Rhino 是一个很流行的脚本语言。正因为它的出色,所以被 JDK 1.6 收编了,换了一身行头变成 javax.script 包了。不过 Mozilla 还一直在开发Rhino ,最近的一个 Realease1.7 是 08年3月份发布的。Rhino 作为一种脚本语言要遵守脚本语言的标准,对 Rhino 或脚本语言不熟悉的朋友可以参考下面的几个连接 Rhino介绍 javaScript 介绍 javaScript 规范 我们来看看 Kettle 里的 JavaScr
Excel 输入步骤
Excel 输入步骤用于从Excel 文件中按照指定的数据类型和格式获取数据。Excel输入步骤的设置包括五个部分: 1. 文件[@more@]选择一个Excel文件或保存有Excel 文件的目录。文件或目录:设置要读取的Excel文件的名称,或一个目录。可以使用【浏览】按钮来选择文件或目录。正则表达式:设置一个正则表达式来匹配一个目录下的部分Excel文件。选择的文件:列出所有选中的文件,可以使用【增加】按钮将【文件或目录】中的文件添加到文件列表中。2. 工作表选择工作薄中的一个或多个工作表,并通过指定工作表中的开始行号和开始列号来设要读取的内容
PDI(Kettle) 是什么?PDI(Kettle) 都能做什么?
PDI(Kettle) 是什么?PDI(Kettle) 是一款开源的、元数据驱动的 ETL (数据的抽取、转换、加载)工具,是开源 ETL 工具里功能比较强大的一个。 [@more@]PDI 的全称是Pentaho Data Integeration,Kettle 是 PDI 以前的名称,Kettle 本意是水壶的意思,表达了数据流的含义。Kettle 的主作者是 Matt ,他在 2003 年就开始了这个项目,在 PDI 的代码里就可以看到最早的日期大概在2003年4月。 从版本2.2开始, Kettle 项目进入了开源领域,并遵守 LGPL 协议。 在 2006年 Kettle 加入了开源的 BI 组织 Pentaho, 正式命名为PDI, 加入Pentaho 后Kettl