所謂報(bào)表工具,核心本質(zhì)的功能,就是它的制表能力,即是否能夠不寫代碼而制作出自己需要的各種報(bào)表。但用戶在考察報(bào)表工具時(shí)往往很注重打印輸出、繪制方案、管理調(diào)度等外圍因素,而忽視了報(bào)表工具本質(zhì)的制表能力。當(dāng)然不可否認(rèn)這些外圍的功能對一個報(bào)表工具來說也是很重要的衡量標(biāo)準(zhǔn),但是報(bào)表工具的主要用途是制作報(bào)表。目前市場上的主流產(chǎn)品能夠處理處理復(fù)雜報(bào)表的只有FineReport和潤乾報(bào)表。
通過對這兩個產(chǎn)品的研究,我們認(rèn)為,報(bào)表工具對復(fù)雜報(bào)表的處理能力應(yīng)該體現(xiàn)在如下幾個方面:
首先是多源分片。
傳統(tǒng)的報(bào)表工具只支持單源報(bào)表,即使是數(shù)據(jù)來自于多個物理數(shù)據(jù)表或者物理數(shù)據(jù)庫,也需要在報(bào)表設(shè)計(jì)前將多源通過寫SQL,存儲過程等轉(zhuǎn)化成單源處理。
多源往往帶來分片,正是由于分片,使得報(bào)表設(shè)計(jì)必須直接基于多源進(jìn)行,而不能先將多源轉(zhuǎn)成單源進(jìn)行。有相當(dāng)一部分分片報(bào)表無論如何也不可能換成單源處理,部分能轉(zhuǎn)成單源的報(bào)表處理也非常繁瑣。
其次,是不規(guī)則劃分機(jī)制。
傳統(tǒng)的分組是完全規(guī)則劃分的,即劃分標(biāo)準(zhǔn)一致且有規(guī)則(一般都按某個字段或表達(dá)式),所有字段都必須出現(xiàn)且只出現(xiàn)一次,分組值次序與原數(shù)據(jù)記錄次序一致。
但是與完全劃分相對應(yīng)的,在報(bào)表匯總中卻常常需要不規(guī)則劃分,即劃分標(biāo)準(zhǔn)看不出規(guī)律(常常只能窮舉),所有事實(shí)不一定全部出現(xiàn)在分組結(jié)果中、個別事實(shí)還可能重復(fù)出現(xiàn),次序也與原數(shù)據(jù)記錄無關(guān)。
然后,還有動態(tài)格間運(yùn)算的能力。
所有的報(bào)表工具都會提供一些計(jì)算列的功能,在原始數(shù)據(jù)基礎(chǔ)上再計(jì)算出一些別的列值或統(tǒng)計(jì)值,這是報(bào)表展現(xiàn)中是不可缺少的功能。
一般的報(bào)表工具一般只提供同行內(nèi)的格間運(yùn)算和針對某組(或全體)的集合運(yùn)算,對于常見的比如累計(jì),取名等跨行組運(yùn)算則相當(dāng)困難。
除了有規(guī)律的跨行組運(yùn)算外,報(bào)表中還可能會有一些隨意的獨(dú)立格運(yùn)算,其值可能是報(bào)表中的任意幾個其它格運(yùn)算出來,甚至還可能會引用到報(bào)表外的數(shù)據(jù)(比如和數(shù)據(jù)庫中的數(shù)據(jù)再次運(yùn)算等)。所以運(yùn)算后報(bào)表數(shù)據(jù)項(xiàng)命名機(jī)制就很重要,傳統(tǒng)工具只能用列名命名設(shè)計(jì)階段的數(shù)據(jù)單元,隨意的獨(dú)立格運(yùn)算會就使傳統(tǒng)工具無法處理,而報(bào)表外的數(shù)據(jù)引用更是只能借助腳本或外圍應(yīng)用程序,導(dǎo)致代碼極為混亂。
另外,所有以上的討論中還貫穿了一點(diǎn),即行列對稱。縱方向上擁有的自動復(fù)制擴(kuò)展的能力需要完全實(shí)現(xiàn)在橫方向上。報(bào)表可以橫向分組、橫向分片,對于橫向變列的報(bào)表可以定義跨列組運(yùn)算等。
上面我們提到目前市場上的主流產(chǎn)品能夠處理處理復(fù)雜報(bào)表的只有FineReport和潤乾 。其它的產(chǎn)品都沒有這種無編碼處理復(fù)雜報(bào)表的能力。包括潤乾的另一個產(chǎn)品:快逸報(bào)表, 因?yàn)?快逸不包含潤乾核心的非線性報(bào)表,不能夠設(shè)計(jì)復(fù)雜報(bào)表的情況下,其帶來的工作量與開源工具不相上下,反而會提升項(xiàng)目成本。
所以個人認(rèn)為這個產(chǎn)品商業(yè)考慮大于產(chǎn)品實(shí)際價(jià)值。因?yàn)橥粋€公司無論如何不會提供兩個功能相同,價(jià)格卻相差十倍以上的產(chǎn)品,無非是以低價(jià)產(chǎn)品吸引用戶的注意力,然后再極力推薦另外一個高價(jià)的產(chǎn)品而已。