報(bào)表說(shuō)明 根據(jù)訂單表和指定年份(參數(shù))按月統(tǒng)計(jì)訂單金額,以及與上一訂單月金額比,與去年同月金額比。報(bào)表樣式如下: 這里需要注意的是比去年同期是指與去年同月份的比值,無(wú)對(duì)應(yīng)月份則為空;要求 只顯示本年數(shù)據(jù) 。 這個(gè)報(bào)表的麻煩之處在于需要較復(fù)雜的數(shù)
根據(jù)訂單表和指定年份(參數(shù))按月統(tǒng)計(jì)訂單金額,以及與上一訂單月金額比,與去年同月金額比。報(bào)表樣式如下:
這里需要注意的是比去年同期是指與去年同月份的比值,無(wú)對(duì)應(yīng)月份則為空;要求只顯示本年數(shù)據(jù)。
這個(gè)報(bào)表的麻煩之處在于需要較復(fù)雜的數(shù)據(jù)計(jì)算工作,但一般報(bào)表工具的計(jì)算能力較弱,如果采用報(bào)表工具本身來(lái)完成這個(gè)計(jì)算工作則會(huì)相當(dāng)復(fù)雜,比如采用用潤(rùn)乾報(bào)表來(lái)實(shí)現(xiàn)將會(huì)是這樣的:
首先通過(guò)兩個(gè)數(shù)據(jù)集分別讀取今年和去年的數(shù)據(jù),在報(bào)表模板中進(jìn)行關(guān)聯(lián)后分別顯示兩年同月的數(shù)據(jù),從而完成比較。
數(shù)據(jù)集設(shè)置
通過(guò)ds1和ds2分別取今年和去年數(shù)據(jù),數(shù)據(jù)集設(shè)置如下:
報(bào)表模板及表達(dá)式設(shè)置
其中,需要設(shè)置D列隱藏,以便報(bào)表展現(xiàn)時(shí)不顯示去年數(shù)據(jù)。
這種實(shí)現(xiàn)方式相對(duì)簡(jiǎn)單,無(wú)需復(fù)雜的表達(dá)式即可實(shí)現(xiàn),但缺點(diǎn)是由于要使用多數(shù)據(jù)源,從同樣數(shù)據(jù)表中過(guò)濾兩次分別輸出兩個(gè)數(shù)據(jù)集,取數(shù)效率較低。此外,隱藏列D也會(huì)影響報(bào)表性能。
通過(guò)按訂購(gòu)年月分組,使用潤(rùn)乾報(bào)表提供的位移坐標(biāo),輔助以隱藏行列的方式實(shí)現(xiàn)。
數(shù)據(jù)集設(shè)置
數(shù)據(jù)集參數(shù)如下:
報(bào)表模板及表達(dá)式設(shè)置
通過(guò)這種方式,通過(guò)潤(rùn)乾報(bào)表中層次坐標(biāo)的高級(jí)寫法避免了多源,體現(xiàn)了潤(rùn)乾報(bào)表的強(qiáng)大之處,但是仍然要依靠隱藏行列實(shí)現(xiàn),而且E3中計(jì)算同期比的計(jì)算表達(dá)式過(guò)于難書寫和理解(要理解主格附屬格的概念、位移坐標(biāo)的使用以及如何在格集表達(dá)式中引用當(dāng)前格的主格),這也給報(bào)表開(kāi)發(fā)和維護(hù)帶來(lái)了困難。
無(wú)論是多數(shù)據(jù)源,還是層次坐標(biāo),依賴隱藏行列,都是因?yàn)樾枰趫?bào)表中完成同環(huán)比計(jì)算導(dǎo)致,而往往這樣的計(jì)算還比較復(fù)雜。這是因?yàn)閭鹘y(tǒng)報(bào)表工具將數(shù)據(jù)計(jì)算(數(shù)據(jù)源準(zhǔn)備)和報(bào)表呈現(xiàn)混在一起導(dǎo)致(即使功能強(qiáng)大的潤(rùn)乾報(bào)表也不例外),如果將這兩部分分開(kāi),則會(huì)使報(bào)表開(kāi)發(fā)更加清晰。
另一種辦法是事先把數(shù)據(jù)計(jì)算準(zhǔn)備好,報(bào)表工具只需要負(fù)責(zé)呈現(xiàn)和簡(jiǎn)單計(jì)算。但無(wú)論是使用復(fù)雜SQL、存儲(chǔ)過(guò)程和自定義JAVA數(shù)據(jù)集編程,對(duì)于這樣的復(fù)雜運(yùn)算(實(shí)際情況往往比這個(gè)例子更麻煩得多)都是一件工作量很大的事情,而且難以維護(hù)。
集算報(bào)表本身內(nèi)置了適合結(jié)構(gòu)化計(jì)算的腳本,可以方便地寫出數(shù)據(jù)準(zhǔn)備的計(jì)算(相當(dāng)于一種更使用更簡(jiǎn)單的自定義數(shù)據(jù)集)。上述報(bào)表需求使用集算報(bào)表可以這樣完成。
使用集算腳本編輯器編寫集算腳本,使用系統(tǒng)默認(rèn)數(shù)據(jù)源demo。
編寫腳本完成同比環(huán)比計(jì)算(右側(cè)為單元格運(yùn)行格值):
A1:連接數(shù)據(jù)源demo;
A2:根據(jù)年份參數(shù)取出今年和去年兩年的訂單數(shù)據(jù);
A3:關(guān)閉數(shù)據(jù)連接;
A4:按訂購(gòu)日期排序;
A5:按年 月分組,并匯總訂單金額;
A6:計(jì)算比上期,這里注意到使用[-1]來(lái)引用上一條記錄;
A7:按月份排序;
A8:計(jì)算相同月份和上一年的比值,即同期比;
A9:只選出本年數(shù)據(jù),通過(guò)A10為報(bào)表返回結(jié)果集。
使用集算報(bào)表編輯器,設(shè)置數(shù)據(jù)源,用于報(bào)表預(yù)覽。
新建報(bào)表模板設(shè)置報(bào)表參數(shù):
設(shè)置集算器數(shù)據(jù)集,調(diào)用上述編輯好的腳本文件:
其中,dfx文件路徑既可以是絕對(duì)路徑,也可以是相對(duì)路徑,相對(duì)路徑是相對(duì)選項(xiàng)中配置的dfx主目錄的;參數(shù)arg1為腳本參數(shù),year為報(bào)表模板參數(shù),這里將報(bào)表輸入?yún)?shù)傳遞給腳本用于數(shù)據(jù)計(jì)算,事實(shí)上兩個(gè)參數(shù)可以同名。
報(bào)表模板及表達(dá)式如下:
可以看到,使用集算器腳本可以快速完成跨行組運(yùn)算的報(bào)表。而且外置的集算腳本具有可視化的編輯調(diào)試環(huán)境,編輯好的腳本還可以復(fù)用(被其他報(bào)表或程序調(diào)用)。不過(guò),如果腳本已經(jīng)調(diào)試好,而且不需要復(fù)用的時(shí)候,要維護(hù)兩個(gè)文件(集算腳本和報(bào)表模板)的一致性會(huì)比較麻煩,這時(shí)候直接使用集算報(bào)表的腳本數(shù)據(jù)集就比較簡(jiǎn)單了。
在腳本數(shù)據(jù)集中可以分步編寫腳本完成計(jì)算任務(wù),語(yǔ)法與集算器一致,還可以直接使用報(bào)表定義好的數(shù)據(jù)源和參數(shù)。以上述第二個(gè)報(bào)表需求為例,使用腳本數(shù)據(jù)集可以這樣完成:
1. 在數(shù)據(jù)集設(shè)置窗口中點(diǎn)擊“增加”按鈕,彈出數(shù)據(jù)集類型對(duì)話框,選擇“腳本數(shù)據(jù)集”;
2.在彈出的腳本數(shù)據(jù)集編輯窗口中編寫腳本;
這里可以看到,在腳本數(shù)據(jù)集中直接使用了報(bào)表中定義好的數(shù)據(jù)源demo和參數(shù)year,比起單獨(dú)的集算腳本更加簡(jiǎn)單、直接。
3.報(bào)表模板和表達(dá)式與使用集算器數(shù)據(jù)集方式一致,不再贅述。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com