﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-双子星座</title><link>http://www.blogjava.net/gemini520/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 07:48:27 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 07:48:27 GMT</pubDate><ttl>60</ttl><item><title>商业智能需要站在全局角度考虑问题</title><link>http://www.blogjava.net/gemini520/archive/2008/03/21/187668.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Fri, 21 Mar 2008 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2008/03/21/187668.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/187668.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2008/03/21/187668.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/187668.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/187668.html</trackback:ping><description><![CDATA[<div class="entry">
<p>首先看一下下面这个表样.这个表样是润乾的一个示例表样,接着介绍birt 是如何做的</p>
<p><a href="http://www.gemini5201314.net/wp-content/uploads/2008/03/5-join-dataset.jpg"><img style="border: 0px none ;" alt="5 join dataset" src="http://www.gemini5201314.net/wp-content/uploads/2008/03/5-join-dataset-thumb.jpg" border="0" height="229" width="638" /></a> </p>
<p>这个表样算是报表中最常见的一种需求了，把不同粒度的数据聚合到同一粒度上.</p>
<p>我们用automobile 表示汽车表, 用houseproperty 表示房产表, 用estate表示土地表,用others
表示其他表.他们都有customerid 来表示客户名称.customers 表有customerid 和customername </p>
<p>1. 用视图来拼数据</p>
<p>&nbsp;&nbsp; 对于&nbsp; automobile 聚合使用一个autoview , sql 如下</p>
<p>&nbsp;&nbsp; select sum(automobile price* quantity) autototal, customerid&nbsp; from automobile group by customerid</p>
<p>&nbsp; 对于 houseproperty 使用如下view</p>
<p>&nbsp;&nbsp; select sum( house price * quantity ) housetotal, customerid&nbsp; from houseproperty group by customerid</p>
<p>&nbsp; 对于 土地和其他也是差不多类型的sql</p>
<p>&nbsp;</p>
<p>&nbsp; 得到了上面这四个视图之后, 就把customers 表根据customerid 和其他四个视图join 起来.</p>
<p>&nbsp; select customername ,&nbsp; autototal&nbsp; , housetotal , estatetotal , othertotal </p>
<p>&nbsp;&nbsp; from&nbsp; customers c , automobile a , houseproperty h , estate e , others o</p>
<p>&nbsp;&nbsp; where 四个视图和customers的连接条件</p>
<p>&nbsp;</p>
<p>&nbsp; 由于这个表样并不涉及到以 汽车，房产，土地， 其他表中的任何一个客户为主, 所以暂时也不考虑左右连接的问题.</p>
<p>&nbsp;</p>
<p>2. 使用Birt 的Joined Data Set</p>
<p>&nbsp;&nbsp; Birt 提供的Joined Data Set 跟数据库里面的视图是差不多的概念，使不过一个是在数据库内部join 数据，一个是使用Java 循环的方式join 数据.</p>
<p>&nbsp;&nbsp; 跟上面创建视图一样，创建四个DataSet , 输出两个字段: customerid 和 total.</p>
<p>&nbsp;&nbsp; 然后创建一个Joint Data Set , 把customers 表和 autototal DataSet
按照customerid join起来.这时得到四个字段 customers.customername ,
customers.customerid&nbsp; ,&nbsp; auto DataSet.customerid ，auto DataSet.autotal
. 最后我们把这个Joint DataSet 命名为jdataSet1 (代表的是autoDataSet 和 customers
产生的Joint DataSet ).</p>
<p>&nbsp; 然后继续创建另一个Joint Data Set 把customers 的customerid 和前一步创建的jDataSet1 按照customerid join 起来得到一个第二个Joint DataSet1 ,我们命名为jDataSet2 .</p>
<p>&nbsp; 以此类推，最后我们输出5个字段: customers.name&nbsp;&nbsp; ,&nbsp;&nbsp; auto.total ,&nbsp; house.total&nbsp; ,
estate.total , others.total , 实际输出可能在customers.customerid 上重复了4次.</p>
<p>&nbsp;</p>
<p>上面两种方式报表的做法主要有两点差别:</p>
<p>1. 性能</p>
<p>&nbsp;&nbsp;&nbsp; 如果本身数据库单独执行一个视图的sql 结果比较小，而本身的automobile
表数据量比较大（也就是说一个customer对非常多的automobile 记录) , 那么使用数据库视图就会比较慢.
因为数据库在尝试得到4个视图的结果进行了一些不必要的按照automobiel表的customerid和customers的customerid进
行的比较操作( 如果有索引肯定是对索引进行了多次不必要的读) ,这时候使用Java的这种循环方式会比较快一点 .
如果本身结构集比较大，那么还是用数据库本身的排序和join 比较快, 这个道理比较类似于数据库中如果结构集大于5%
就不要走索引,直接进行全表扫描.只不过这是一个java 版的.</p>
<p>2. 左右连接的问题</p>
<p>&nbsp;&nbsp;
如果这个表的数据不是以customers里面的数据为主，而是以四个视图其中的一个为主.这时候要情况可能会比较复杂一些.由于我不太清楚birt
里面joint data set 计算的方式是怎样的，所以也不太好评论.不过如果不使用joint data set ,
就是使用一般的编程的方式.那么按照下面这个思路会比较好:</p>
<p>a , b , c , d ,e&nbsp; 为customers , automobiles view&nbsp; (后面简写avlist 表示这个集),
housetotal view , 里面的指针.&nbsp; 四个view 都已经排好了序.group by 是默认排序的. outlist
表示最后需要的输出 , row表示最后输出的一条数据</p>
<p>for ( 按照主数据循环)&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp; row.customerid = customers.customerid;</p>
<p>&nbsp;&nbsp;&nbsp; if( customers.customerid == avlist[b].customerid) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; outlist[x].autotaol = avlist[b].autotal ;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b++</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; 四个view 同一个判断方式, 但是每个view 的指针指的是不一样的.</p>
<p>&nbsp;&nbsp;&nbsp; 最后:&nbsp;&nbsp; outlistSet . add (outlist[x])</p>
<p>}</p>
<p>&nbsp;</p>
<p>如果数据源本身的数据量也很大，需要输出的数据也很多，则上面两种方式都会有性能问题，这时可以考虑商业智能里面的万金油方式: ETL</p>
<p>&nbsp;</p>
<p>3. ETL</p>
<p>&nbsp;&nbsp;&nbsp; 从上面这个表样看来，可能会有两个隐含条件.一个是聚合的数据粒度在时间上是月，另一个在销售地点粒度上是：支行086001-301
,
所以用ETL一开始就聚合数据可能会更好的解决性能问题.另外一个是如果用户想要排序和过滤数据的话用一个单独的ETL聚合表也比拼数据的方式好的多.</p>
<p>&nbsp;</p>
<p>这篇文章的目的并不只是想解释一个做表的问题，而是说明商业智能的一些问题不光需要站在一个独立的角度思考，有些问题本身可能随着环境的一些变化而
采取对应的措施，比如上面为了解决排序，过滤，左右连接，性能问题都需要从不同的角度来考虑问题.有时候可能一个做表的问题不光只是要限定在sql
或某个报表软件的本身，有时候某个ETL问题可能不关只是ETL就能解决的,随着情况的复杂可能需要从整个商业智能的全局来进行考虑，商业智能越来越倾向
与多个解决方法的融合.</p>
<p>本文原文在 <a href="http://www.gemini5201314.net/">http://www.gemini5201314.net</a></p>
<p>如果你对ETL中性能优化问题有兴趣的话，也可以查看另一篇关于在ETL中性能优化要站在全局的角度，而不是只在数据库角度的文章.</p>
</div>
<img src ="http://www.blogjava.net/gemini520/aggbug/187668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2008-03-21 12:16 <a href="http://www.blogjava.net/gemini520/archive/2008/03/21/187668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重新学习Birt 中......</title><link>http://www.blogjava.net/gemini520/archive/2007/06/19/125213.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Tue, 19 Jun 2007 15:07:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/19/125213.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/125213.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/19/125213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/125213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/125213.html</trackback:ping><description><![CDATA[<div align="center"><font size="4">重新学习Birt 中......</font><br>
</div>
<font size="4">又重新回到birt的学习中，以前用的时候本身功能也不算太好，再加上自己是个比较浮躁的人，什么都想了解一点，所以学的
也不是很好，最近计划又重新系统的学习一下Birt ，网上搜了一下，除了eclipse
官方的资料外，几乎没有什么有用的资料，要么就是太旧了，要么根本就是没有用，你抄我的，我抄他的，最后大家都抄成了一样的了，<br>
算了，还是自己动手，丰衣足食吧，决定还是好文章自己写, 先写下自己的计划吧 , 把roadmap 放出来，也算给自己一种鞭策吧.<br>
<br>
第一篇 : 把birt&nbsp; 用 ecilpse 跑出来.最简单的Java 程序. (eclipse 官方的例子)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把birt 放到 tomcat 跑起来.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (eclipse 官方的例子)<br>
<br>
第二篇 : 利用eclipse 的可视化报表设计器设计模板,主要介绍,参数，sorting ,&nbsp; grouping&nbsp; ,&nbsp; mapping&nbsp; ,&nbsp; filtering , hightlighting , <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (eclipse 官方flash演示的文字版)<br>
<br>
第三篇 : 利用birt&nbsp; 的desing api 和 report api 来做java 编程，主要还是集成到servlet&nbsp; 环境.<br>
<br>
第四篇 : 把 birt 和pentaho 集成起来 .&nbsp; (其实pentaho 官方有一份这个文档,不过我的例子稍微会介绍的更加实用一点)<br>
<br>
大约时间是一个月吧，如果超期了，我就请大家吃饭，呵呵，只要你能够找的到我 , <br>
要真到了那个时候， 我只能说:<br>
地球是很危险的，我还是回火星去吧.<br>
<br>
有很多朋友都说birt 让他们很失望，其实birt 有一点性能问题外，基本还算可以，如果你非要说有这些，那些不爽，我只能说一句话:<br>
还记得大话西游里面，周星驰率领一群土匪围攻白晶晶她们, 她们在周星驰重要部位点了两次火，然后吴孟达说：都焦了，割了算了吧.<br>
记得周星驰说什么吗？<br>
不记得就再去重温一遍经典吧?<br>
<br>
<br>
</font>
<br><img src ="http://www.blogjava.net/gemini520/aggbug/125213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-19 23:07 <a href="http://www.blogjava.net/gemini520/archive/2007/06/19/125213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse enropa 即将发布 birt 的新功能一览</title><link>http://www.blogjava.net/gemini520/archive/2007/06/17/124811.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sun, 17 Jun 2007 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/17/124811.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/124811.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/17/124811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/124811.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/124811.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eclipse enropa 即将发布 birt 的新功能一览<br>最新的eclipse enropa 即将在6月29号发布了.官方说会有21个项目同时发布.其中我只关心三个项目.一个是WTP , 一个是TPTP 最后一个是BIRT .<br>我看了一下BIRT 所增加的新功能，从2.2M4 开始<br>http://www.eclipse.org/birt/phoenix/project/notable2.2M4.php<br>http://www.eclipse.org/birt/phoenix/project/notable2.2M5.php<br>http://www.eclipse.org/birt/phoenix/project/notable2.2M6.php<br>http://www.eclipse.org/birt/phoenix/project/notable2.2RC0.php<br><br><br>2.2 M4<br>1 . 和WTP集成的BIRT Tag .<br>2 . Word Emitter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 支持WORD 的 emitter . (emitter 翻译是发射，我想应该是可以预览和打印的输出格式吧)<br>3 . XML Source Editor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 支持xml 格式的编辑器<br>4 . Property Editor Changes<br>5 . Highlight Style&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于特定条件的Item 进行高亮显示.<br><br>2.2 M5<br>1 . BIRT Chart Improvements&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>2 . Viewer Improvements<br>3 . Emitters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 增强了PDF 的emitters<br>4 . Advanced Properties&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在可以显示所有的属性了.<br><br>2.2 M6<br>1 . BIRT Chart Improvements&nbsp;&nbsp;&nbsp; 新增加了一种chart tag library 和chart view servlet<br>2 . XLS Emitter Prototype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新增加了一种XLS 输出的格式<br>3 . Linking Cascading Style Sheets&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 情理之中的事情<br>4 . BIRT Viewer Changes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>5 . Report Examples View&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新提供了一些example,提供给初学者和想了解birt新功能的爱好者.<br>6 . Dynamic Connection Profiles 动态的数据源链接<br>7 . Report Parameter Changes&nbsp;&nbsp;&nbsp; 增加了一种组合框的parameter view.类似与选省份和城市的那种双选框.<br><br>2.2 RC0<br>1 . Web Service ODA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新增加的Web Service 的数据源.可以支持像ebay , amazon的那种Web Service 的数据了.<br>2 . Charting Improvements&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新增加使用script 来处理chart的事件.好像是用的javascript.<br>3 . PPT Emitter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新增加对Power Point&nbsp; 的emitter.<br>4 . Dynamic Crosstab Support&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; 这是最让我激动的功能.完全就是OLAP的功能的一部分.Palo的demo中，是通过一个Excel 的Plug-in,是excel 支持olap的，不过它不能跨平台，甚至连excel 都跨不出去，<br>&nbsp;&nbsp;&nbsp; 而birt提供的这个功能更加的强大.而且很容易就能够实现，定制化也比较强(就是说它提供API ，让你自己编程实现这些功能).<br>&nbsp;&nbsp; &nbsp;<br>一下子看到BIRT太多的功能了，希望能够正式发布的时候birt能够比较稳定吧.<br><br><br>没有找到WTP2.0 和 TPTP 4.3 的新功能列表.<br>其中我只关心在TPTP 4.2.2 Callisto 中的TPTP经常性的Block 的Issue 解决了没有.<br>同样希望TPTP也能够稳定吧。功能倒是其次. java 中profiler 工具倒是不少，可是大多好的都是商业的，难得有一个这么好的开源的版本，要是bug问题不解决就不好了.<br><br>听说eclipse 的SOA 建模工具第一次发布.我倒是不关心，目前还是把精力focus birt上了，觉得eclipse 本身可能已经没有太多新功能发展了，主要就是把plugin 做好，<br>然后想办法能够解决plugin 之间版本的兼容性问题就够了. 最近也试用了一下NetBean ,没有深入用，还是有点失望的，希望NetBean 的坚定拥护者不要扁我. 字体丑，界面丑<br>也就算了，但是跑出来吓人就是你的不对了嘛! 丑也就算了，速度也稍微慢一点（我说的是稍微）.本来想看一下它的Porfiler 功能怎么样的，后来还是算了，毕竟自己没打算<br>用.就算是自己没有深入用过，不懂吧，乱说了话，希望不要引起Netbean 支持者的海扁.<br><br>最近在collab下载svn 的时候无意中看到了它的svn enterprise 版的.其中有一个是支持eclipse 的 Mylyn 插件的（21个项目其中一个),做项目管理的.不知道eclipse 搞<br>Mylyn 是不是有打算进入项目管理领域 . 它居然还是2.0版.不知道有哪位用过. <br><br>最近使用firefox的时候 ，有时候打开一个网页莫名其妙的就firefox 挂掉了，也不是真的挂了，就是有时候等个2分钟它又好了，有时候firefox整个不见了，但是进程里面<br>它还在，你点开一个新的firefox&nbsp; 然后两个人就手拉手的都跑出来了. 不知道是不是大家也有遇到过相同情况的. 装了Opera , firefox 挂掉的时候就用Opera , 里面有一个<br>打电话的功能我觉得倒是非常的有意思，创意呀! 不希望firefox 独大 ， 也不希望eclipse 独大 ，更不希望Microsoft 独大 , 同样不希望 Intel 独大(AMD hold on) .<br>有竞争才能推动发展嘛.<br><br>最近在msn 上认识了许多朋友. 有一位跟我聊起了JBoss , 我对JBoss 的认识还停留在JBoss 服务器上.后来听他说才知道JBoss 已经发展了一套完整的J2EE 框架了，包括很多<br>方面,才恍然大悟 原来现在中间件这么重要. Red Hat 跟exadel 结盟要推新的SOA 工具，好像SOA是很火的，不过还是认为如果公司不是做SOA 的，学SOA 没有什么用.<br>SOA 要在中国成熟还要很多年的.那时候都不知道是个什么样子了.不过将来一个公司面对使用多种操作系统，多种数据库，多种软件平台，多种编程语言，总会需要一个框架<br>来解决这些问题的，就算SOA 成功了也好，SOA 失败了也好，需求总是会有的.还是等SOA 成熟了再观望一下吧, 广告看看还可以，要真掏钱出来还是要谨慎的。<br>纯属个人认识，说的不对还请高手指点.<br><br>写的比较杂,就当是看八卦吧.<br><br>最近学习Birt ，主要是它的新功能.然后还是准备学会如何在pentaho里面集成 birt 吧.希望能够和birt 爱好者，尤其是高手一起交流.<br><br>&nbsp;<br><img src ="http://www.blogjava.net/gemini520/aggbug/124811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-17 16:33 <a href="http://www.blogjava.net/gemini520/archive/2007/06/17/124811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>商业智能研究(十七)     Mondrian 如何使用 materialized view</title><link>http://www.blogjava.net/gemini520/archive/2007/06/10/123223.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sun, 10 Jun 2007 11:02:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/10/123223.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/123223.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/10/123223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/123223.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/123223.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gemini520/archive/2007/06/10/123223.html'>阅读全文</a><img src ="http://www.blogjava.net/gemini520/aggbug/123223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-10 19:02 <a href="http://www.blogjava.net/gemini520/archive/2007/06/10/123223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 商业智能研究(十六)materialized view+dimension提高mondrian性能(二)</title><link>http://www.blogjava.net/gemini520/archive/2007/06/10/123222.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sun, 10 Jun 2007 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/10/123222.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/123222.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/10/123222.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/123222.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/123222.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gemini520/archive/2007/06/10/123222.html'>阅读全文</a><img src ="http://www.blogjava.net/gemini520/aggbug/123222.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-10 18:58 <a href="http://www.blogjava.net/gemini520/archive/2007/06/10/123222.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>商业智能研究(十五) materialized view+dimension提高mondrian性能</title><link>http://www.blogjava.net/gemini520/archive/2007/06/10/123221.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sun, 10 Jun 2007 10:57:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/10/123221.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/123221.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/10/123221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/123221.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/123221.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gemini520/archive/2007/06/10/123221.html'>阅读全文</a><img src ="http://www.blogjava.net/gemini520/aggbug/123221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-10 18:57 <a href="http://www.blogjava.net/gemini520/archive/2007/06/10/123221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 商业智能研究(十四) mondrian + oracle 部署foodmart demo</title><link>http://www.blogjava.net/gemini520/archive/2007/06/10/123220.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sun, 10 Jun 2007 10:56:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/10/123220.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/123220.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/10/123220.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/123220.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/123220.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gemini520/archive/2007/06/10/123220.html'>阅读全文</a><img src ="http://www.blogjava.net/gemini520/aggbug/123220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-10 18:56 <a href="http://www.blogjava.net/gemini520/archive/2007/06/10/123220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 商业智能研究 (十三) oracle warehouse 一些基本概念</title><link>http://www.blogjava.net/gemini520/archive/2007/06/09/123099.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sat, 09 Jun 2007 13:54:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/09/123099.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/123099.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/09/123099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/123099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/123099.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/gemini520/archive/2007/06/09/123099.html'>阅读全文</a><img src ="http://www.blogjava.net/gemini520/aggbug/123099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-09 21:54 <a href="http://www.blogjava.net/gemini520/archive/2007/06/09/123099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在tomcat上部署pentaho 1.5.3</title><link>http://www.blogjava.net/gemini520/archive/2007/06/02/121512.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Sat, 02 Jun 2007 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/06/02/121512.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/121512.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/06/02/121512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/121512.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/121512.html</trackback:ping><description><![CDATA[最近一直在做mondrian的foodmart的实验，有位朋友的公司要部署一个pentaho的demo来做演示，我跟他说直接运行demo就可以
了，但是他们公司非要自己从头配一个，所以我就自己做了一下实验基于最新的1.5.3的，其实步骤都差不多，其他版本也应该可以，希望能给喜欢
pentaho的朋友一点帮助。<br>
<br>
1 . 首先需要下载pentaho-j2ee-deployment- , pentaho-data- 和 pentaho-solution- 三个包，分别解压到三个不同的地方<br>
2 . 从命令行进入pentaho-j2ee-deployment 目录，运行ant -p 会列出所有的ant
任务，执行war-pentaho-tomcat-hypersonic任务,成功之后会生成4个war包，pentaho-portal-
layout.war , pentaho-style.war 和 sw-style.war ，(sw-style.war
是steel-wheel-style
，是可选项，可能是pentaho的一个例子或者是pentaho的一种style风格),还有多出一个tomcat目录下的hsqldb目录下有一个
pentaho.war
，如果你执行的是war-pentaho-mysql就是在tomcat目录下有个mysql5目录，里面一样是pentaho.war.我选用的是
hsqldb .<br>
3 . 在你的tomcat的安装目录下找到conf / server.xml 文件，在其中的host 元素下加上如下这一段，这一段是从pentaho的文档里面抄来的，manual-deployment-pentaho- ,其中它列出来的有些多余，这个文档应该使用confluence 用pdf 方式导出的，抄的时候注意检查一下xml 元素排版上的问题.它列出的resource 元素太多了，你查看pentaho-data- 包里面，应该只有四个数据库hibernate,sampledata,shark,quartz ,把不用的resource元素都删掉，（应该是最上面的四个）.如果你的tomcat启动不了了，检查一下你添加的部分是不是有错。<br>
<br>
<resource name="jdbc/Shark" auth="Container"><br>
</resource>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Context&nbsp;</span><span style="color: #ff0000;">path</span><span style="color: #0000ff;">="/pentaho"</span><span style="color: #ff0000;">&nbsp;docbase</span><span style="color: #0000ff;">="webapps/pentaho/"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Resource&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jdbc/SampleData"</span><span style="color: #ff0000;">&nbsp;auth</span><span style="color: #0000ff;">="Container"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff;">="javax.sql.DataSource"</span><span style="color: #ff0000;">&nbsp;maxActive</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;">&nbsp;maxIdle</span><span style="color: #0000ff;">="5"</span><span style="color: #ff0000;">&nbsp;maxWait</span><span style="color: #0000ff;">="10000"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff;">="pentaho_user"</span><span style="color: #ff0000;">&nbsp;password</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory</span><span style="color: #0000ff;">="org.apache.commons.dbcp.BasicDataSourceFactory"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff;">="org.hsqldb.jdbcDriver"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff;">="jdbc:hsqldb:hsql://localhost/sampledata"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Resource&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jdbc/Hibernate"</span><span style="color: #ff0000;">&nbsp;auth</span><span style="color: #0000ff;">="Container"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff;">="javax.sql.DataSource"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory</span><span style="color: #0000ff;">="org.apache.commons.dbcp.BasicDataSourceFactory"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;">&nbsp;maxIdle</span><span style="color: #0000ff;">="5"</span><span style="color: #ff0000;">&nbsp;maxWait</span><span style="color: #0000ff;">="10000"</span><span style="color: #ff0000;">&nbsp;username</span><span style="color: #0000ff;">="hibuser"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;">&nbsp;driverClassName</span><span style="color: #0000ff;">="org.hsqldb.jdbcDriver"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff;">="jdbc:hsqldb:hsql://localhost/hibernate"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Resource&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jdbc/Quartz"</span><span style="color: #ff0000;">&nbsp;auth</span><span style="color: #0000ff;">="Container"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff;">="javax.sql.DataSource"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory</span><span style="color: #0000ff;">="org.apache.commons.dbcp.BasicDataSourceFactory"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;">&nbsp;maxIdle</span><span style="color: #0000ff;">="5"</span><span style="color: #ff0000;">&nbsp;maxWait</span><span style="color: #0000ff;">="10000"</span><span style="color: #ff0000;">&nbsp;username</span><span style="color: #0000ff;">="pentaho_user"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff;">="password"</span><span style="color: #ff0000;">&nbsp;driverClassName</span><span style="color: #0000ff;">="org.hsqldb.jdbcDriver"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff;">="jdbc:hsqldb:hsql://localhost/quartz"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">Resource&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jdbc/Shark"</span><span style="color: #ff0000;">&nbsp;auth</span><span style="color: #0000ff;">="Container"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff;">="javax.sql.DataSource"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory</span><span style="color: #0000ff;">="org.apache.commons.dbcp.BasicDataSourceFactory"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff;">="20"</span><span style="color: #ff0000;">&nbsp;maxIdle</span><span style="color: #0000ff;">="5"</span><span style="color: #ff0000;">&nbsp;maxWait</span><span style="color: #0000ff;">="10000"</span><span style="color: #ff0000;">&nbsp;username</span><span style="color: #0000ff;">="sa"</span><span style="color: #ff0000;">&nbsp;password</span><span style="color: #0000ff;">=""</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff;">="org.hsqldb.jdbcDriver"</span><span style="color: #ff0000;"><br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #ff0000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff;">="jdbc:hsqldb:hsql://localhost/shark"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">Context</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;"></span></div>
<br>
<br>
<br>
4 . 把pentaho.war copy到tomcat 的webapps目录下，它会自动解压的，然后关闭tomcat ,
找到pentaho/WEB-INF/web.xml 文件，找到solution-path元素，指向你解压后的pentaho-solution- 目录，注意java里面是用正斜杠 / ,如果你从windows的地址栏copy的话注意把反斜杠改一下.<br>
5 . 修改pentaho/WEB-INF/classes 目录下的log4j.xml文件，把<appender name="CONSOLE">
&nbsp;
里面的value改成INFO,或者更高，这一步是可选项，主要是启动的时候出现很多不必要的debug
信息.如果你启动的时候出错了，再改回来。(一般都是solution-path没有找对，我用7-zip解压的时候老是解压到一个新的目录，所以后来指
定 solution-path 的时候，目录地址高了一级.) <br>
6 . 启动pentaho-data-<version> 目录里面的hsqldb数据库.<br>
7 . 这个时候启动tomcat ,应该是不报任何错误的.你把浏览器指向http://localhost:8080/pentaho ，会看到pentaho的界面的，只不过是没有什么颜色的那种.<br>
8 . 把编译後的三个war文件copy到tomcat 的webapps目录下，等它们自动解压之后，再进去看，发现有了样式了。安装就完成了.<br>
<br>
贴几张图:<br>
pentaho成功启动后应该有 Pentaho BI 平台服务器就绪 这句话.<br>
<img src="http://jjjava.javaeye.com/upload/picture/pic/3617/da1322f0-17f7-489c-8154-2a8be5e11a58.png" alt=""><br>
<br>
安装了style 和 portal 包之后的登录界面<br>
<img src="http://jjjava.javaeye.com/upload/picture/pic/3618/9a769a00-a268-4f47-955b-1556b4d9eb3a.png" alt=""><br>
<br>
在pentaho-data-<version> 目录的lib 目录下执行java -cp hsqldb.jar org.hsqldb.util.DatabaseManager&nbsp; 出现的hsqldb 的manager 登录画面<br>
用户名和密码都在相应目录的数据库文件里面，hsqldb的数据库文件是可以用<br>
文本编辑器打开的，搜索password就可以找到用户名和密码了<br>
<img src="http://jjjava.javaeye.com/upload/picture/pic/3620/ba6b21ae-edba-4c1f-9a0b-1f107d7b8e54.png" alt=""><br>
<br>
sampledata 里面的数据<br>
<br>
<img src="http://jjjava.javaeye.com/upload/picture/pic/3619/25f40c67-dfe7-45d5-b916-f2571f9bd0d1.png" alt=""><br>
<br>
<br>
我在安装的时候也碰到了诸多的问题，<br>
1 . 一开始编译的时候使用的ant war-pentaho-tomcat
任务，它直接报错，说找不到rdbms目录，后来猜想这个任务应该是留给其他数据库编译的时候扩展的.直接就换了war-pentaho-tomcat-
hypersonic 任务重新编译了一次<br>
2 .
后来从文档里copy出数据源的那句话出错了，导致tomcat启动不了，因为从pdf文件copy的那段话排版有问题，后来把它粘贴到eclipse
(装了WTP插件的）里面，一格式化就看出来了，context 元素和后面的属性path中间的空格没了，还有多出来了几个resource元素.<br>
3 . 指定solution-path的时候目录高了一级.<br>
4 . 启动tomcat的时候出现了很多不必要的debug信息，修改log4j文件就可以了，它在tomcat/bin 目录下还会生成几个log文件，像是server.log 和ReportEngine_<data time="">.log 文件。<br>
<br>
<br>
写这篇文章的目的更多的是希望喜欢pentaho的朋友在用pentaho做实验的时候能够学会思考，出现了问题先在网上找资料，而不是无论遇到什么问题都求别人来回答你，知识是长期积累的过程，新技术总是不断的出现，比如最近火的不得了的JavaFX,<br>
也许将来pentaho可能会用JavaFX 来做OLAP 和 DashBoard 也不一定的 。关键还是要掌握学习的方法，学会思考问题 . 我安装的时候也遇到了很多问题，但是只要你细细的分析问题的原因，总是可以找出解决的办法的.<br><br></data></version></version></appender>  <img src ="http://www.blogjava.net/gemini520/aggbug/121512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-06-02 18:07 <a href="http://www.blogjava.net/gemini520/archive/2007/06/02/121512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>商业智能平台研究 (十) ETL 选型</title><link>http://www.blogjava.net/gemini520/archive/2007/05/22/119232.html</link><dc:creator>gemini</dc:creator><author>gemini</author><pubDate>Tue, 22 May 2007 13:41:00 GMT</pubDate><guid>http://www.blogjava.net/gemini520/archive/2007/05/22/119232.html</guid><wfw:comment>http://www.blogjava.net/gemini520/comments/119232.html</wfw:comment><comments>http://www.blogjava.net/gemini520/archive/2007/05/22/119232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gemini520/comments/commentRss/119232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gemini520/services/trackbacks/119232.html</trackback:ping><description><![CDATA[<font size="4">商业智能平台研究 (十) ETL 选型</font>
<br><font size="4">ETL
(Extract-Transform-Load的缩写，即数据抽取、转换、装载的过程)作为BI/DW（Business
Intelligence）的核心和灵魂，能够按照统一的规则集成并提高数据的价值，是负责完成数据从数据源向目标数据仓库转化的过程，是实施数据仓库的
重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图，数据是砖瓦的话，那么ETL就是建设大厦的过程。在整个项目中最难部分是用户需求分析和模型设
计，而ETL规则设计和实施则是工作量最大的，约占整个项目的60%～80%，这是国内外从众多实践中得到的普遍共识。<br>
<br>
ETL工具从厂商来分为两种,一种是数据库厂商自带的ETL工具,Oracle warehouse builder
就是这种,另外一种是第三方工具提供商.开源世界也有一大票的ETL工具,功能各异,强弱不一,你可以从一下地址找到开源ETL工具的列表
http://www.manageability.org/blog/stuff/open-source-etl/view&nbsp; ,
提醒一句,选用工具的时候要慎重,真的,千万要慎重,不管你是选用商业的ETL工具(一般比较贵),还是开源的工具,都要在你充分了解产品的特性才去选
择,千万不要听某某人说什么这个工具好,就购买了那个工具,一定要自己了解产品.<br>
<br>
开源的ETL工具的列表 (排名是乱排的)<br>
kettle&nbsp; http://kettle.pentaho.org/&nbsp; ,pentaho官方的ETL工具,是一个metadata-driven 的ETL工具,不需要自己写code .<br>
talend&nbsp; http://www.talend.com/&nbsp;&nbsp;&nbsp; talend是talend自己公司的产品,宣传的是全功能的Data
Integration 解决方案,基于eclipse 平台,包括很多的模块来实现商业流程建模,数据流程建模,最后输出的是perl 和 Java
code<br>
jasperETL&nbsp; http://www.jaspersoft.com/&nbsp;&nbsp; JasperETL是基于talend的平台,不太清楚有什么区别,jaspersoft开发的ETL产品.<br>
Octopus&nbsp;&nbsp; http://www.enhydra.org/tech/octopus/index.html&nbsp;&nbsp;&nbsp;
octopuc是enhydra 的一个ETL工具,enhydra是一个产品跨度非常大的开源站点,它有个开源的Workflow ,Shark
,pentaho就是使用的这个Workflow ,这个组织从workflow 到application server ,
从ETL工具到application framework
,还有一些其他的中间件,octopus非常的原始,支持任何的JDBC数据源,用XML语言来定义的.也支持JDBC-DOBC ,和excel 和
access ,csv-files, XML files ,用Ant 和 JUnit 来创建表和测试.<br>
CloverETL http://cloveretl.berlios.de/&nbsp;&nbsp;
CloverETL是提供给你一组API,用XML来定义ETL过程,同样支持JDBC数据源,
CloverETL是开源的,但是它是没有图形界面的,它提供一个有图形界面的CloverGUI
来进行ETL的图形化开发过程,但是不是开源的,需要购买商业许可证.<br>
KETL&nbsp;&nbsp; http://www.ketl.org/&nbsp;&nbsp;&nbsp; 听说是几个前IBM员工做出来的ETL产品,<br>
另外还有很多.不一一写介绍了,只列个表吧,<br>
Joost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://joost.sourceforge.net/&nbsp;&nbsp;&nbsp; 最近有个web2.0 网站也叫Joost,名字相同而已.<br>
Xineo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://software.xineo.net/xil.jspx<br>
BabelDoc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://sourceforge.net/projects/babeldoc<br>
CB2XML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://sourceforge.net/projects/cb2xml<br>
mec-eagle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://sourceforge.net/projects/mec-eagle/<br>
Transmorpher&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://transmorpher.inrialpes.fr/<br>
XPipe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://xpipe.sourceforge.net/Articles/Miscellaneous/fog0000000018.html<br>
DataSift&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.datasift.org/<br>
Xephyrus Flume&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.xephyrus.com/flume/flume-intro.Prlx<br>
Smallx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; https://smallx.dev.java.net/<br>
Nux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://dsd.lbl.gov/nux/index.html<br>
Netflux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.netflux.org/<br>
OpenDigger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; https://opendigger.dev.java.net/<br>
ServingXML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://servingxml.sourceforge.net/<br>
Scriptella&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://scriptella.javaforge.com/<br>
ETL Integrator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.glassfishwiki.org/jbiwiki/Wiki.jsp?page=ETLSE<br>
Jitterbit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.jitterbit.com/<br>
Apatar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.apatar.com/<br>
Spring Batch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://static.springframework.org/spring-batch/<br>
<br>
大多数站点都是在sf.net上的.其中最后一个是Spring的,大名鼎鼎的Spring 也往ETL插一脚.实在是..........<br>
根据talend官方介绍的数据,ETL工具的市场份额在2006好像是有160多亿美元.由于BI项目的成功,ETL的这一市场份额还会扩大,这也不难
理解,为什么这么多的公司都在做ETL工具了.开源世界也免不了想要分一杯羹.再次废话一句,开源的东西你可以免费得到和使用,但是当你想应用到企业级开
发的时候,省钱可不是唯一应该考虑的因素.还是那句话,慎重呀慎重.<br>
<br>
下一篇介绍BI的基本概念.</font>
<br><br><img src ="http://www.blogjava.net/gemini520/aggbug/119232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gemini520/" target="_blank">gemini</a> 2007-05-22 21:41 <a href="http://www.blogjava.net/gemini520/archive/2007/05/22/119232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>