close

所謂報表工具,最核心最本質的功能,就是它的製表能力,即是否能夠不寫代碼而製作出自己需要的各種報表。但用戶在考察報表工具時往往很注重列印輸出、繪製方案、管理調度等外圍因素,而忽視了報表工具最本質的製表能力。當然不可否認這些外圍的功能對一個報表工具來說也是很重要的衡量標準,但是報表工具的主要用途是製作報表。目前市場上的主流產品能夠處理處理複雜報表的只有FineReport和潤乾報表。
通過對這兩個產品的研究,我們認為,報表工具對複雜報表的處理能力應該體現在如下幾個方面:

首先是多源分片。
傳統的報表工具只支持單源報表,即使是數據來自於多個物理數據表或者物理資料庫,也需要在報表設計前將多源通過寫SQL,存儲過程等轉化成單源處理。
多源往往帶來分片,正是由於分片,使得報表設計必須直接基於多源進行,而不能先將多源轉成單源進行。有相當一部分分片報表無論如何也不可能換成單源處理,部分能轉成單源的報表處理也非常繁瑣。
其次,是不規則劃分機制。
傳統的分組是完全規則劃分的,即劃分標準一致且有規則(一般都按某個欄位或表達式),所有欄位都必須出現且只出現一次,分組值次序與原數據記錄次序一致。
但是與完全劃分相對應的,在報表匯總中卻常常需要不規則劃分,即劃分標準看不出規律(常常只能窮舉),所有事實不一定全部出現在分組結果中、個別事實還可能重複出現,次序也與原數據記錄無關。

然後,還有動態格間運算的能力。
所有的報表工具都會提供一些計算列的功能,在原始數據基礎上再計算出一些別的列值或統計值,這是報表展現中是不可缺少的功能。
一般的報表工具一般只提供同行內的格間運算和針對某組(或全體)的集合運算,對於常見的比如累計,取第一名等跨行組運算則相當困難。
除了有規律的跨行組運算外,報表中還可能會有一些隨意的獨立格運算,其值可能是報表中的任意幾個其它格運算出來,甚至還可能會引用到報表外的數據(比如和資料庫中的數據再次運算等)。所以運算後報表數據項命名機制就很重要,傳統工具只能用列名命名設計階段的數據單元,隨意的獨立格運算會就使傳統工具無法處理,而報表外的數據引用更是只能藉助腳本或外圍應用程序,導致代碼極為混亂。

另外,所有以上的討論中還貫穿了一點,即行列對稱。
縱方向上擁有的自動複製擴展的能力需要完全實現在橫方向上。報表可以橫向分組、橫向分片,對於橫向變列的報表可以定義跨列組運算等。

上面提到目前市場上的主流產品能夠處理複雜報表的只有FineReport和潤乾。其它的產品都沒有這種無編碼處理複雜報表的能力。

 

FineReport報表免費下載——零編碼做報表、多維圖表、多源填報、許可權管理,完美兼容excel官網:http://www.finereport.com/tw/

arrow
arrow
    全站熱搜

    leohope 發表在 痞客邦 留言(0) 人氣()