天天看點

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

這幾年Java報表市場很是熱鬧了一陣,先是水晶報表、Brio、Style等海外産品相繼殺入市場,而後是國内的華表、中創、數巨、和勤、潤乾、傑表等揭竿而起(這中間有的是僅支援Java的,有的是支援所有WEB環境的),一時間狼煙四起,概念戰、眼球戰、價格戰,好一番厮殺。

到如今塵埃落定,天下三分——

水晶報表、Brio分别歸入BO和Hyperion門下,倚仗BO和Hyperion在BI領域的高牆深壑,堅守最後一塊底盤;

Style Report、數巨報表、和勤報表以智能分析型報表為依托,虎踞市場腹地,并晝夜厲兵秣馬,加強BI産品 功能,期待有朝一日可白衣渡江,在BO和Hyperion眼皮下虎口奪食;

華表、中創、潤乾、傑表等單一展現型報表,大多已是風流總被雨打風吹去,目前唯餘潤乾與傑表尚在厮殺,但前有Style、數巨、和勤等分析型報表打壓,後有JasperReports、Eclipse BIRT等開源産品侵擾,雖不至于勢若危卵,但總不是那麼輕松寫意。

市場三分,究其根源,在于産品。功能和性能—— 軟體永恒的話題,最終決定産品、 企業未來發展的原動力。那麼,本文就來分析一下各 Web報表的功能與性能。

分析對象: Style Report、水晶報表、數巨報表、潤乾報表

分析方法:抽取各個産品示範樣例及說明 文檔中,最具有代表性的報表,将這些報表使用其他産品進行設計,以比較功能、性能優勢。

報表1:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:Style Report

各産品得分(滿分10分):

Style Report:10

水晶報表:7

數巨報表:10

潤乾報表:10

評分依據:

這張報表其實在設計上,并沒有什麼特殊的要求,僅僅是繁雜。

目前的報表 工具有兩種設計模式:一種是帶狀模式,以控件在帶狀區域的擺放為設計方法,以靈活性和擴充性為主要設計優勢,缺點在于繪制複雜表格時需要消耗一定的工時,上表就是一個典型的例子。另一種為表格模型,類似Excel,以簡化表格設計複雜度為主要優勢,在繪制表格時比較友善,缺點在于靈活性及擴充性不及帶狀模型。

上表的兩個特征:靜态表格結構繁雜、以正常方式顯示 資料,故而最适合的是采用表格式而非帶狀模式。

在四個報表中,Style Report采用表格模式,水晶報表采用帶狀模型,數巨報表可同時支援表格模型和帶狀模型,潤乾報表采用表格模型。故而給予Style Report、數巨報表、潤乾報表均為10分,而水晶報表雖然采用帶狀模型,但通過一定的工作量可以完成上表設計,并且提供了多種快捷方式以優化設計過程,故而給予7分。

報表2:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:Style Report

各産品得分(滿分10分):

Style Report:10

水晶報表:8

數巨報表:10

潤乾報表:10

評分依據:

這張報表是一個交叉表,左側的“鋼類”、“序号”,根據資料源傳回資料自動向下擴充;上表頭的“鋼錠”等字樣,根據據資料源傳回資料自動向右擴充。從這個角度說,這張報表不算複雜。

稍微有些複雜的第二列“序号”和第三列“合計”。顯然,序号是不可能作為一個字段在資料源中出現的,而合計按照标準交叉表設計模式慣例,是放置在最後一列的。這就需要對交叉表進行額外的處理。

一般采用的方式是分為多個設計片區進行處理。

在Style Report、數巨報表、潤乾報表中,都有報表分片設計的概念,可以将一個平面表分解為多個具有邏輯關聯的片區進行設計,各個片區間可以進行跨片區運算。這樣上表設計起來就非常簡單了。故而這三個産品在這個功能上都給予了10分。

但是在水晶報表中,隻能采用多個子報表拼接的方式完成上述要求,在各個子報表拼接位置、邏輯關聯方面設計起來比較麻煩,故而僅給予8分。

報表3:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:水晶報表

各産品得分(滿分10分):

Style Report:8

水晶報表:10

數巨報表:8

潤乾報表:8

評分依據:

本張報表屬于多個交叉表的關聯組合,設計難度略大于報表二,主要原因在于:多個交叉表的組合,不僅僅是在橫向上由多組組合而成,在縱向上也是如此。

本來和報表二一樣,Style Report、數巨報表、潤乾報表,可以使用報表分片設計的方法,很容易 解決這個問題,而水晶報表則需要使用子表拼接的發放,設計難度和複雜度高于前者。但是,在報表中,表頭的格内嵌入了一個圖檔,将圖檔和文字在同一個格中進行同步顯示,這是Style Report、數巨報表、潤乾報表所做不到的。

故而在此項評估中,水晶報表10分,其餘三個産品各8分。

報表4:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:數巨報表

各産品得分(滿分10分):

Style Report:0

水晶報表:10

數巨報表:10

潤乾報表:0

評分依據:

本報表看似普通,不過是甘特圖和表格的結合而已。然而,難點就在這裡:如何做到甘特圖中的進度條分行與表格一一對應。

使用數巨報表和水晶報表來設計的話,甘特圖的進度條是使用一個填色格控件是獨立重疊擺放的,可以根據資料行數進行自動循環複制,并逐行進行報表運算,根據運算資料結果來調整目前起始位置與長度,進而達到與表中其他資料行同步的顯示效果。

也就是說,要設計這樣的報表,需要報表工具做到:1. 設計控件之間的屬性相對獨立、2. 同一控件不同衍生執行個體的屬性相對獨立、3. 控件執行個體在衍生過程中的屬性精密可控。

Style Report和潤乾報表不支援此類功能,故為為0分,水晶報表和數巨報表各10分。

報表5:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:數巨報表

各産品得分(滿分10分):

Style Report:10

水晶報表:10

數巨報表:10

潤乾報表:10

評分依據:

将某種條件下的資料,以與衆不同的色彩進行展現,已經是所有成熟報表産品的 基礎功能。本功能所有産品均有對應功能解決。故均為10分。

報表6:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:數巨報表

各産品得分(滿分10分):

Style Report:0

水晶報表:10

數巨報表:10

潤乾報表:0

評分依據:

是很簡單的一張報表,有産品大類8個,分别是數位、運動休閑、服裝、計算機、家電、通訊、珠寶和食品飲料。需要用清單來顯示各自銷量。

設計的需求唯一特殊之處在于:出于 使用者對重點産品的關心,在排序上,要求“數位”和“運動休閑”兩類産品分别放在第一、二行顯示,“食品飲料”類産品放在最行一行顯示,其他資料排序不做強制要求。

由于 資料庫中資料排序不固定,無論是在資料提取時按照産品大類名稱還是銷量進行排序,均無法保證資料顯示順序一定符合要求。

數巨報表和水晶報表均提供了對資料源資料記錄的強制排序功能,可以比較便捷地解決該問題,但Style Report和潤乾報表僅能簡單地按照資料源順序或逆序進行排列。故而本項評分,Style Report和潤乾報表0分,數巨報表和水晶報表10分。

報表7:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表
主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:數巨報表

各産品得分(滿分10分):

Style Report:0

水晶報表:0

數巨報表:10

潤乾報表:0

評分依據:

上表是一個典型的分組報表,需要将 銷售 訂單資料按銷售地區進行分組顯示。特殊之處在于,由于資料量比較大,浏覽者希望能象Word文檔一樣在報表封面上加上一個目錄,并且能夠在浏覽的時候,滑鼠點選目錄,則報表自動跳轉到該目錄對應的内容頁面。

數巨報表可為報表設計中的每一個對象,用findViewObject的方法建立運作執行個體,通過方法AddAnchor标記執行個體的目前位置,結合 系統内部跳轉函數,可以很友善實作上述需求。故給予10分。

其餘三類産品均對此需求無能為力,故給予0分。

報表8:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:數巨報表

各産品得分(滿分10分):

Style Report:0

水晶報表:0

數巨報表:10

潤乾報表:0

評分依據:

報表要求:

1、資料篩選條件:

  統計區域:<全國/ 北京/山東……>

  教育程度:<全部/國小/國中/……>

  性别:<全部/男/女>

  年齡段:<全部/16歲以下/16歲~18歲/19歲~30歲/31歲~40歲/41歲~50歲/51歲~60歲/60歲以上>

2、報表建立條件:

由使用者在建立報表前選擇統計分行規則(選擇行屬性内容),行屬性分類包括:審批地區/受理地/戶口所在地/前往國或地區/申請原因類别/年齡段/教育程度。

難點分析:

報表的難點不在于正常的設計制作,而在于統計中行的分類方式是可變的:浏覽者可以随意在年齡段、審批地區、受理地等内容上進行選擇,報表按照使用者選擇進行分行統計。比如,使用者選擇“年齡段”統計,則報表中每行統計的是不同年齡段的資料;當使用者選擇為“受理地”時,每行統計的是不同受理地的資料。使用者做出不同的選擇,報表中<行屬性分類>辨別處的資料内容就會發生相應的變化,同時統計資料方法也會發生根本的改變。

對産品要求:

能夠允許報表中某些資料的擷取方法根據報表建立過程中産生的中間資料計算結果進行邏輯分析,然後根據規則向資料庫請求對應的資料。

結論:

在四種産品中,隻有數巨報表的“資料庫動态指令” 技術,能夠滿足上述要求,故給予10分,其餘産品0分。

報表9:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:潤乾報表

各産品得分(滿分10分):

Style Report:8

水晶報表:8

數巨報表:10

潤乾報表:10

評分依據:

這張報表所展現的功能需求,是目前單元格與其上下左右單元格進行跨行跨列運算的能力。這種運算不僅僅包含四則運算,還包含其他一些擴充性要求,比如本表要求的排名計算。

跨行列的四則運算,對于Style Report、水晶報表、數巨報表和潤乾報表來說都不是難事,唯獨在對于排名運算方面,特别是要求不僅僅對原始資料進行排名,同時還需要對多列運算結果進行排名,這種要求對于Style Report和水晶報表而言略顯複雜,需要進行多步循環運算才能實作。而在數巨報表和潤乾報表中,均可直接對單元格資料進行排名運算。

是以本例中,給予Style Report、水晶報表各自8分,數巨報表和潤乾報表各自10分。

報表10:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:潤乾報表

各産品得分(滿分10分):

Style Report:8

水晶報表:8

數巨報表:10

潤乾報表:10

評分依據:

本例報表是不規則分組交叉表,其特征表現為:

1、  同樣的資料,按照不同名額要求,重複交叉運算,形成交叉報表。

2、  值區域分組,這點和正常交叉報表不同,正常交叉表都是以字段值為分組條件,而不是以字段值所在區域為條件的。比如年齡:在正常交叉表中會顯示21歲、22歲、23歲……,不同的年齡是一個分組間隔。而在上表中,要求将制定段落區域的年齡作為一個分組條件。

在水晶報表中,需要通過多個子報表拼接來組合成上述樣式,缺點在于子報表之間的間距、表格線對齊等等需要反複調試,比較麻煩。而Style Report、數巨報表和潤乾報表,可以直接在類Excel表格中,使用多個設計區域的方式進行設計,故而在此方面水晶報表表現出它的不足。

在值區域分組方面,做得比較好的是數巨報表和潤乾報表,均可以直接在單元格中通過腳本進行分組規則定義并展現。水晶報表可通過腳本進行處理,略有不足,但仍不失為一種方式。Style Report在此方面的功能比較薄弱,需要預先對資料進行區域分組處理。

在本例中,數巨報表和潤乾報表均表現出完美的解決 方案,故給予10分,水晶報表和Style Report在進行中各自有所不足,故給予8分。

報表11:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:潤乾報表

各産品得分(滿分10分):

Style Report:8

水晶報表:5

數巨報表:10

潤乾報表:10

評分依據:

本報表難度在于同期比、比上期之類的與時間相關的運算,而這些運算往往需要用到下一行的資料除上一行資料,後一列資料除前一列資料等。

針對這種涉及到行間、列間的運算,Style Report、數巨報表和潤乾報表均可直接進行單元格位移運算。而水晶報表僅能在資料源中進行預先處理,而後做資料填充。盡管最終報表得以實作,但過程複雜,對設計者技術要求高,故而水晶報表僅得5分。

盡管Style Report、數巨報表和潤乾報表均支援位移運算,但如遇到多個分組行數不規則的情況,比如某一年份某季度資料缺失,導緻該分組隻有三行資料,則在應付這種意外事件時,Style Report無能為力,僅能通過預先的資料校驗來處理,故而略顯不足,給予8分。

數巨報表和潤乾報表則均由單元格運算比對模型,可以在運算中對位移單元格進行比對校驗,故而本報表樣例給予滿分10分。

報表12:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:潤乾報表

各産品得分(滿分10分):

Style Report:6

水晶報表:6

數巨報表:10

潤乾報表:10

評分依據:

這個表是個典型的橫向分片報表,資料區從左至右分成了幾片,既有固定的統計資料,也有根據資料庫記錄擴充出來的動态資料,這種固定與變動結合的報表在實際中是非常常見的。

此外,與前面談到的報表二、三不同,這張報表不僅僅涉及到多交叉表組合,還涉及到交叉表與清單之間的組合、交叉表與清單之間的跨列計算。

數巨報表、潤乾報表,可以使用報表分片設計的方法,很容易解決這個問題,而Style Report、水晶報表則需要使用子表拼接和資料源預先處理的方法,設計難度和複雜度遠遠高于前者。

故而在此項評估中,Style Report、水晶報表各6分,數巨報表、潤乾報表各10分。

報表13:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:潤乾報表

各産品得分(滿分10分):

Style Report:8

水晶報表:8

數巨報表:10

潤乾報表:9

評分依據:

這張報表看起來簡單,但它的資料實際上是放在汽車、房産、土地、其他四張表中。

這張表的做法有兩種,方法之一是做一個視圖,将 客戶名稱、汽車、房産、土地、其他等資料項以外關聯形式組合起來,然後以清單形式去顯示。這種方法優點在于資料運算執行效率高(關聯運算在 伺服器上執行,無疑效率要高于報表伺服器執行,特别是在大資料量的情況下),缺點在于視圖建立比較麻煩,另外考慮到額外情況,比如“其他”列資料在資料庫表中如無直接對應,需要進行歸類運算的話,則更為複雜;還有一個局限性,是如果這五張表存在不同的 業務系統中(資料庫不統一),這種方法将無能為力。

方法之二是單獨寫5個 SQL,将客戶名稱、汽車、房産、土地、其他等資料逐一運算出來,然後在報表設計過程中以客戶名稱進行對應關聯展現。這種方法優點在于設計過程簡單,并且适應能力強,缺點在于效率上不及第一種方法。

第三種方法是單獨寫5個SQL,将客戶名稱、汽車、房産、土地、其他等資料逐一運算出來,與第二中方法不同之處,是并非将關聯置于報表邏輯中完成,而是以 SQL模式進行二次關聯運算,這步關聯運算,在報表伺服器上通過報表伺服器内置的SQL引擎完成。這種方法綜合了上述兩種方法的優點,在保證擴充性、易用性的同時,也保證了執行效率。

第一種方法四類産品都支援,第二種方法僅有數巨報表和潤乾報表支援,第三種方法僅有數巨報表支援。是以,評分結果:Style Report、水晶報表各8分,數巨報表10分,潤乾報表9分。

報表14:

主流Java報表工具功能對比 -- Style Report、水晶報表、數巨報表、潤乾報表

樣例提供者:數巨報表

各産品得分(滿分10分):

Style Report:8

水晶報表:0

數巨報表:10

潤乾報表:0

評分依據:

聯機分析(OLAP)是由關系資料庫之父E.F.Codd于1993年提出的一種資料動态分析模型,它允許以一種稱為多元資料集的多元結構通路來自商業資料源的經過聚合群組織整理的資料。

OLAP的作用,簡單來說,是允許最終使用者以自定義操作的方式,對資料進行動态的聚類分析,分析條件可以自行交叉組合,并且可對聚類資料進行逐層深入分析,直至找到資料表象的内在深層誘因。是商業智能的最核心也是最基本的功能。

目前,支援OLAP的報表我們一般稱之為分析型報表,反之稱之為展現型報表。由于OLAP産品對于研發的技術要求比較高,國内僅有數巨報表、和勤報表等為數不多的幾家廠商具有此類功能。而潤乾報表等低端産品均未能支援。

國外的Style Report支援OLAP,而水晶報表由于并入BO家族,BO另辟産品線,故而未能支援。

如果将Style Report和數巨報表進行OLAP功能對比的話,就可以發現,數巨報表在人機互動上更加具有可操作性。數巨報表支援浏覽端直接使用滑鼠進行次元 設定,并且Cube裝載運算在用戶端完成,故而在表現力及運作效率上更為優越(無需反複請求伺服器,并且避免了相同資料線上路中的重複傳遞)。此外,數巨報表允許 OLAP脫機運作,使用者可通過Email等方式分發OLAP目前模型,這樣就帶來了更為廣闊的 應用空間。

綜合評定,該項名額,Style Report得8分,數巨報表10分,其餘産品0分。

報表15:

Cube建立:原始資料1000萬條記錄,維數量:10;度量個數:2

評估重點:Cube建立中的運算效率及系統穩定性

各産品得分(滿分10分):

Style Report:8

水晶報表:0

數巨報表:10

潤乾報表:0

評分依據:

功能滿足:Style Report和數巨報表均具有獨立的OLAP Server,水晶報表和潤乾不支援OLAP。故而水晶報表和潤乾報表為0分。

系統穩定:運作過程中,Style Report和數巨報表均未産生錯誤。

Cube生成周期:Style Report:97分42秒  數巨報表:61分01秒

系統占用記憶體峰值:Style Report:711MB  數巨報表:838MB

結論:Cube生成周期,Style Report所需時間,超過數巨報表50%以上,說明數巨報表在Cube算法上優于Style Report。但在記憶體消耗上,數巨報表高于Style Report接近20%,說明在對資源消耗上,Style Report具有優勢。考慮到在實際商務應用中,效率更為關鍵,故而本環節,給予數巨報表10分,Style Report 8分。

總分合計

  Style Report  92分

  水晶報表       90分

  數巨報表       148分

  潤乾報表       87分