雙子星座

           

          2007年6月10日

          商業(yè)智能需要站在全局角度考慮問題

          首先看一下下面這個表樣.這個表樣是潤乾的一個示例表樣,接著介紹birt 是如何做的

          5 join dataset

          這個表樣算是報表中最常見的一種需求了,把不同粒度的數(shù)據(jù)聚合到同一粒度上.

          我們用automobile 表示汽車表, 用houseproperty 表示房產(chǎn)表, 用estate表示土地表,用others 表示其他表.他們都有customerid 來表示客戶名稱.customers 表有customerid 和customername

          1. 用視圖來拼數(shù)據(jù)

             對于  automobile 聚合使用一個autoview , sql 如下

             select sum(automobile price* quantity) autototal, customerid  from automobile group by customerid

            對于 houseproperty 使用如下view

             select sum( house price * quantity ) housetotal, customerid  from houseproperty group by customerid

            對于 土地和其他也是差不多類型的sql

           

            得到了上面這四個視圖之后, 就把customers 表根據(jù)customerid 和其他四個視圖join 起來.

            select customername ,  autototal  , housetotal , estatetotal , othertotal

             from  customers c , automobile a , houseproperty h , estate e , others o

             where 四個視圖和customers的連接條件

           

            由于這個表樣并不涉及到以 汽車,房產(chǎn),土地, 其他表中的任何一個客戶為主, 所以暫時也不考慮左右連接的問題.

           

          2. 使用Birt 的Joined Data Set

             Birt 提供的Joined Data Set 跟數(shù)據(jù)庫里面的視圖是差不多的概念,使不過一個是在數(shù)據(jù)庫內(nèi)部join 數(shù)據(jù),一個是使用Java 循環(huán)的方式j(luò)oin 數(shù)據(jù).

             跟上面創(chuàng)建視圖一樣,創(chuàng)建四個DataSet , 輸出兩個字段: customerid 和 total.

             然后創(chuàng)建一個Joint Data Set , 把customers 表和 autototal DataSet 按照customerid join起來.這時得到四個字段 customers.customername , customers.customerid  ,  auto DataSet.customerid ,auto DataSet.autotal . 最后我們把這個Joint DataSet 命名為jdataSet1 (代表的是autoDataSet 和 customers 產(chǎn)生的Joint DataSet ).

            然后繼續(xù)創(chuàng)建另一個Joint Data Set 把customers 的customerid 和前一步創(chuàng)建的jDataSet1 按照customerid join 起來得到一個第二個Joint DataSet1 ,我們命名為jDataSet2 .

            以此類推,最后我們輸出5個字段: customers.name   ,   auto.total ,  house.total  , estate.total , others.total , 實際輸出可能在customers.customerid 上重復(fù)了4次.

           

          上面兩種方式報表的做法主要有兩點差別:

          1. 性能

              如果本身數(shù)據(jù)庫單獨執(zhí)行一個視圖的sql 結(jié)果比較小,而本身的automobile 表數(shù)據(jù)量比較大(也就是說一個customer對非常多的automobile 記錄) , 那么使用數(shù)據(jù)庫視圖就會比較慢. 因為數(shù)據(jù)庫在嘗試得到4個視圖的結(jié)果進(jìn)行了一些不必要的按照automobiel表的customerid和customers的customerid進(jìn) 行的比較操作( 如果有索引肯定是對索引進(jìn)行了多次不必要的讀) ,這時候使用Java的這種循環(huán)方式會比較快一點 . 如果本身結(jié)構(gòu)集比較大,那么還是用數(shù)據(jù)庫本身的排序和join 比較快, 這個道理比較類似于數(shù)據(jù)庫中如果結(jié)構(gòu)集大于5% 就不要走索引,直接進(jìn)行全表掃描.只不過這是一個java 版的.

          2. 左右連接的問題

             如果這個表的數(shù)據(jù)不是以customers里面的數(shù)據(jù)為主,而是以四個視圖其中的一個為主.這時候要情況可能會比較復(fù)雜一些.由于我不太清楚birt 里面joint data set 計算的方式是怎樣的,所以也不太好評論.不過如果不使用joint data set , 就是使用一般的編程的方式.那么按照下面這個思路會比較好:

          a , b , c , d ,e  為customers , automobiles view  (后面簡寫avlist 表示這個集), housetotal view , 里面的指針.  四個view 都已經(jīng)排好了序.group by 是默認(rèn)排序的. outlist 表示最后需要的輸出 , row表示最后輸出的一條數(shù)據(jù)

          for ( 按照主數(shù)據(jù)循環(huán))  {

              row.customerid = customers.customerid;

              if( customers.customerid == avlist[b].customerid) {

                     outlist[x].autotaol = avlist[b].autotal ;

                     b++

               }

              四個view 同一個判斷方式, 但是每個view 的指針指的是不一樣的.

              最后:   outlistSet . add (outlist[x])

          }

           

          如果數(shù)據(jù)源本身的數(shù)據(jù)量也很大,需要輸出的數(shù)據(jù)也很多,則上面兩種方式都會有性能問題,這時可以考慮商業(yè)智能里面的萬金油方式: ETL

           

          3. ETL

              從上面這個表樣看來,可能會有兩個隱含條件.一個是聚合的數(shù)據(jù)粒度在時間上是月,另一個在銷售地點粒度上是:支行086001-301 , 所以用ETL一開始就聚合數(shù)據(jù)可能會更好的解決性能問題.另外一個是如果用戶想要排序和過濾數(shù)據(jù)的話用一個單獨的ETL聚合表也比拼數(shù)據(jù)的方式好的多.

           

          這篇文章的目的并不只是想解釋一個做表的問題,而是說明商業(yè)智能的一些問題不光需要站在一個獨立的角度思考,有些問題本身可能隨著環(huán)境的一些變化而 采取對應(yīng)的措施,比如上面為了解決排序,過濾,左右連接,性能問題都需要從不同的角度來考慮問題.有時候可能一個做表的問題不光只是要限定在sql 或某個報表軟件的本身,有時候某個ETL問題可能不關(guān)只是ETL就能解決的,隨著情況的復(fù)雜可能需要從整個商業(yè)智能的全局來進(jìn)行考慮,商業(yè)智能越來越傾向 與多個解決方法的融合.

          本文原文在 http://www.gemini5201314.net

          如果你對ETL中性能優(yōu)化問題有興趣的話,也可以查看另一篇關(guān)于在ETL中性能優(yōu)化要站在全局的角度,而不是只在數(shù)據(jù)庫角度的文章.

          posted @ 2008-03-21 12:16 gemini 閱讀(385) | 評論 (0)編輯 收藏

          重新學(xué)習(xí)Birt 中......

          重新學(xué)習(xí)Birt 中......
          又重新回到birt的學(xué)習(xí)中,以前用的時候本身功能也不算太好,再加上自己是個比較浮躁的人,什么都想了解一點,所以學(xué)的 也不是很好,最近計劃又重新系統(tǒng)的學(xué)習(xí)一下Birt ,網(wǎng)上搜了一下,除了eclipse 官方的資料外,幾乎沒有什么有用的資料,要么就是太舊了,要么根本就是沒有用,你抄我的,我抄他的,最后大家都抄成了一樣的了,
          算了,還是自己動手,豐衣足食吧,決定還是好文章自己寫, 先寫下自己的計劃吧 , 把roadmap 放出來,也算給自己一種鞭策吧.

          第一篇 : 把birt  用 ecilpse 跑出來.最簡單的Java 程序. (eclipse 官方的例子)
                   把birt 放到 tomcat 跑起來.                   (eclipse 官方的例子)

          第二篇 : 利用eclipse 的可視化報表設(shè)計器設(shè)計模板,主要介紹,參數(shù),sorting ,  grouping  ,  mapping  ,  filtering , hightlighting ,
                   (eclipse 官方flash演示的文字版)

          第三篇 : 利用birt  的desing api 和 report api 來做java 編程,主要還是集成到servlet  環(huán)境.

          第四篇 : 把 birt 和pentaho 集成起來 .  (其實pentaho 官方有一份這個文檔,不過我的例子稍微會介紹的更加實用一點)

          大約時間是一個月吧,如果超期了,我就請大家吃飯,呵呵,只要你能夠找的到我 ,
          要真到了那個時候, 我只能說:
          地球是很危險的,我還是回火星去吧.

          有很多朋友都說birt 讓他們很失望,其實birt 有一點性能問題外,基本還算可以,如果你非要說有這些,那些不爽,我只能說一句話:
          還記得大話西游里面,周星馳率領(lǐng)一群土匪圍攻白晶晶她們, 她們在周星馳重要部位點了兩次火,然后吳孟達(dá)說:都焦了,割了算了吧.
          記得周星馳說什么嗎?
          不記得就再去重溫一遍經(jīng)典吧?



          posted @ 2007-06-19 23:07 gemini 閱讀(449) | 評論 (0)編輯 收藏

          eclipse enropa 即將發(fā)布 birt 的新功能一覽

                                  eclipse enropa 即將發(fā)布 birt 的新功能一覽
          最新的eclipse enropa 即將在6月29號發(fā)布了.官方說會有21個項目同時發(fā)布.其中我只關(guān)心三個項目.一個是WTP , 一個是TPTP 最后一個是BIRT .
          我看了一下BIRT 所增加的新功能,從2.2M4 開始
          http://www.eclipse.org/birt/phoenix/project/notable2.2M4.php
          http://www.eclipse.org/birt/phoenix/project/notable2.2M5.php
          http://www.eclipse.org/birt/phoenix/project/notable2.2M6.php
          http://www.eclipse.org/birt/phoenix/project/notable2.2RC0.php


          2.2 M4
          1 . 和WTP集成的BIRT Tag .
          2 . Word Emitter                 支持WORD 的 emitter . (emitter 翻譯是發(fā)射,我想應(yīng)該是可以預(yù)覽和打印的輸出格式吧)
          3 . XML Source Editor            支持xml 格式的編輯器
          4 . Property Editor Changes
          5 . Highlight Style              對于特定條件的Item 進(jìn)行高亮顯示.

          2.2 M5
          1 . BIRT Chart Improvements             
          2 . Viewer Improvements
          3 . Emitters                   增強(qiáng)了PDF 的emitters
          4 . Advanced Properties        現(xiàn)在可以顯示所有的屬性了.

          2.2 M6
          1 . BIRT Chart Improvements    新增加了一種chart tag library 和chart view servlet
          2 . XLS Emitter Prototype      新增加了一種XLS 輸出的格式
          3 . Linking Cascading Style Sheets      情理之中的事情
          4 . BIRT Viewer Changes        
          5 . Report Examples View        新提供了一些example,提供給初學(xué)者和想了解birt新功能的愛好者.
          6 . Dynamic Connection Profiles 動態(tài)的數(shù)據(jù)源鏈接
          7 . Report Parameter Changes    增加了一種組合框的parameter view.類似與選省份和城市的那種雙選框.

          2.2 RC0
          1 . Web Service ODA             新增加的Web Service 的數(shù)據(jù)源.可以支持像ebay , amazon的那種Web Service 的數(shù)據(jù)了.
          2 . Charting Improvements       新增加使用script 來處理chart的事件.好像是用的javascript.
          3 . PPT Emitter                 新增加對Power Point  的emitter.
          4 . Dynamic Crosstab Support    
              這是最讓我激動的功能.完全就是OLAP的功能的一部分.Palo的demo中,是通過一個Excel 的Plug-in,是excel 支持olap的,不過它不能跨平臺,甚至連excel 都跨不出去,
              而birt提供的這個功能更加的強(qiáng)大.而且很容易就能夠?qū)崿F(xiàn),定制化也比較強(qiáng)(就是說它提供API ,讓你自己編程實現(xiàn)這些功能).
              
          一下子看到BIRT太多的功能了,希望能夠正式發(fā)布的時候birt能夠比較穩(wěn)定吧.


          沒有找到WTP2.0 和 TPTP 4.3 的新功能列表.
          其中我只關(guān)心在TPTP 4.2.2 Callisto 中的TPTP經(jīng)常性的Block 的Issue 解決了沒有.
          同樣希望TPTP也能夠穩(wěn)定吧。功能倒是其次. java 中profiler 工具倒是不少,可是大多好的都是商業(yè)的,難得有一個這么好的開源的版本,要是bug問題不解決就不好了.

          聽說eclipse 的SOA 建模工具第一次發(fā)布.我倒是不關(guān)心,目前還是把精力focus birt上了,覺得eclipse 本身可能已經(jīng)沒有太多新功能發(fā)展了,主要就是把plugin 做好,
          然后想辦法能夠解決plugin 之間版本的兼容性問題就夠了. 最近也試用了一下NetBean ,沒有深入用,還是有點失望的,希望NetBean 的堅定擁護(hù)者不要扁我. 字體丑,界面丑
          也就算了,但是跑出來嚇人就是你的不對了嘛! 丑也就算了,速度也稍微慢一點(我說的是稍微).本來想看一下它的Porfiler 功能怎么樣的,后來還是算了,畢竟自己沒打算
          用.就算是自己沒有深入用過,不懂吧,亂說了話,希望不要引起Netbean 支持者的海扁.

          最近在collab下載svn 的時候無意中看到了它的svn enterprise 版的.其中有一個是支持eclipse 的 Mylyn 插件的(21個項目其中一個),做項目管理的.不知道eclipse 搞
          Mylyn 是不是有打算進(jìn)入項目管理領(lǐng)域 . 它居然還是2.0版.不知道有哪位用過.

          最近使用firefox的時候 ,有時候打開一個網(wǎng)頁莫名其妙的就firefox 掛掉了,也不是真的掛了,就是有時候等個2分鐘它又好了,有時候firefox整個不見了,但是進(jìn)程里面
          它還在,你點開一個新的firefox  然后兩個人就手拉手的都跑出來了. 不知道是不是大家也有遇到過相同情況的. 裝了Opera , firefox 掛掉的時候就用Opera , 里面有一個
          打電話的功能我覺得倒是非常的有意思,創(chuàng)意呀! 不希望firefox 獨大 , 也不希望eclipse 獨大 ,更不希望Microsoft 獨大 , 同樣不希望 Intel 獨大(AMD hold on) .
          有競爭才能推動發(fā)展嘛.

          最近在msn 上認(rèn)識了許多朋友. 有一位跟我聊起了JBoss , 我對JBoss 的認(rèn)識還停留在JBoss 服務(wù)器上.后來聽他說才知道JBoss 已經(jīng)發(fā)展了一套完整的J2EE 框架了,包括很多
          方面,才恍然大悟 原來現(xiàn)在中間件這么重要. Red Hat 跟exadel 結(jié)盟要推新的SOA 工具,好像SOA是很火的,不過還是認(rèn)為如果公司不是做SOA 的,學(xué)SOA 沒有什么用.
          SOA 要在中國成熟還要很多年的.那時候都不知道是個什么樣子了.不過將來一個公司面對使用多種操作系統(tǒng),多種數(shù)據(jù)庫,多種軟件平臺,多種編程語言,總會需要一個框架
          來解決這些問題的,就算SOA 成功了也好,SOA 失敗了也好,需求總是會有的.還是等SOA 成熟了再觀望一下吧, 廣告看看還可以,要真掏錢出來還是要謹(jǐn)慎的。
          純屬個人認(rèn)識,說的不對還請高手指點.

          寫的比較雜,就當(dāng)是看八卦吧.

          最近學(xué)習(xí)Birt ,主要是它的新功能.然后還是準(zhǔn)備學(xué)會如何在pentaho里面集成 birt 吧.希望能夠和birt 愛好者,尤其是高手一起交流.

           

          posted @ 2007-06-17 16:33 gemini 閱讀(461) | 評論 (0)編輯 收藏

          商業(yè)智能研究(十七) Mondrian 如何使用 materialized view

               摘要:   閱讀全文

          posted @ 2007-06-10 19:02 gemini 閱讀(540) | 評論 (0)編輯 收藏

          商業(yè)智能研究(十六)materialized view+dimension提高mondrian性能(二)

               摘要:   閱讀全文

          posted @ 2007-06-10 18:58 gemini 閱讀(470) | 評論 (0)編輯 收藏

          商業(yè)智能研究(十五) materialized view+dimension提高mondrian性能

               摘要:   閱讀全文

          posted @ 2007-06-10 18:57 gemini 閱讀(512) | 評論 (0)編輯 收藏

          商業(yè)智能研究(十四) mondrian + oracle 部署foodmart demo

               摘要:   閱讀全文

          posted @ 2007-06-10 18:56 gemini 閱讀(1167) | 評論 (0)編輯 收藏

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙门县| 万全县| 庐江县| 新余市| 裕民县| 麻江县| 洞口县| 兴化市| 巫溪县| 射阳县| 普兰县| 兰考县| 承德市| 青冈县| 雅安市| 鹤庆县| 巍山| 太谷县| 兖州市| 广安市| 镇宁| 库伦旗| 徐州市| 兴隆县| 宽城| 工布江达县| 图木舒克市| 右玉县| 上栗县| 敖汉旗| 久治县| 桂东县| 肥西县| 托里县| 上饶县| 宝坻区| 安福县| 瑞丽市| 珲春市| 宁德市| 南川市|