两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種報(bào)表數(shù)據(jù)采集系統(tǒng)和方法

文檔序號(hào):6650075閱讀:237來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種報(bào)表數(shù)據(jù)采集系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù),特別是指一種報(bào)表數(shù)據(jù)采集系統(tǒng)和方法。
背景技術(shù)
報(bào)表數(shù)據(jù)采集系統(tǒng)的功能是采集業(yè)務(wù)數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行處理,最終獲得生成報(bào)表所需的報(bào)表數(shù)據(jù)。一個(gè)常見(jiàn)的報(bào)表數(shù)據(jù)采集系統(tǒng)主要包括數(shù)據(jù)采集模塊,用于根據(jù)數(shù)據(jù)源的定義從數(shù)據(jù)庫(kù)中獲取生成報(bào)表所需的數(shù)據(jù),即報(bào)表數(shù)據(jù),最終生成可供用戶(hù)查閱的報(bào)表。
一般的報(bào)表數(shù)據(jù)采集系統(tǒng)均支持從數(shù)據(jù)庫(kù),擴(kuò)展標(biāo)識(shí)語(yǔ)言(XML)文件,企業(yè)級(jí)JavaBean(EJB)中采集數(shù)據(jù)。在一般應(yīng)用場(chǎng)景下,報(bào)表數(shù)據(jù)采集系統(tǒng)僅需通過(guò)一條結(jié)構(gòu)化查詢(xún)語(yǔ)言(SQL)語(yǔ)句,從數(shù)據(jù)庫(kù)中查詢(xún)本次業(yè)務(wù)所需的原始數(shù)據(jù),然后就可以直接利用獲得的原始數(shù)據(jù)生成報(bào)表了。然而在電信等復(fù)雜環(huán)境中,由于業(yè)務(wù)數(shù)據(jù)來(lái)源比較復(fù)雜,因此報(bào)表數(shù)據(jù)在大多數(shù)情況下是無(wú)法從數(shù)據(jù)庫(kù)或XML文件中直接獲得的,而是需要對(duì)從數(shù)據(jù)庫(kù)中查詢(xún)到的原始數(shù)據(jù)進(jìn)一步進(jìn)行預(yù)處理,如分組聚合,包括橫向聚合和縱向聚合等,從而將采集到的原始數(shù)據(jù)轉(zhuǎn)化為最終生成報(bào)表所需的數(shù)據(jù),即報(bào)表數(shù)據(jù)。例如數(shù)據(jù)庫(kù)中保存有2005年1月4日這一天每15分鐘的話務(wù)量數(shù)據(jù),但是用戶(hù)需要查看的是一整天的數(shù)據(jù),這時(shí)就需要對(duì)原始的15分鐘的話務(wù)量數(shù)據(jù)做一次匯總,匯總完畢的數(shù)據(jù)才可以用來(lái)生成報(bào)表,才是報(bào)表數(shù)據(jù)。
現(xiàn)有的一種報(bào)表數(shù)據(jù)采集系統(tǒng)采取預(yù)定義存儲(chǔ)過(guò)程(Stored Procedure)的方式實(shí)現(xiàn)對(duì)原始數(shù)據(jù)的預(yù)處理,得到最終的報(bào)表數(shù)據(jù),該系統(tǒng)結(jié)構(gòu)如圖1所示,主要包括數(shù)據(jù)采集模塊、數(shù)據(jù)源定義存儲(chǔ)模塊和數(shù)據(jù)庫(kù),且數(shù)據(jù)庫(kù)又進(jìn)一步包括原始數(shù)據(jù)存儲(chǔ)模塊和存儲(chǔ)過(guò)程管理模塊,其中,數(shù)據(jù)采集模塊用于根據(jù)來(lái)自外部的報(bào)表數(shù)據(jù)生成指令從數(shù)據(jù)源定義存儲(chǔ)模塊讀取數(shù)據(jù)源定義,并將讀取的數(shù)據(jù)源定義和接收到的報(bào)表數(shù)據(jù)生成指令中所包含的用戶(hù)條件值攜帶于存儲(chǔ)過(guò)程調(diào)用運(yùn)行指令中發(fā)送至數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊。存儲(chǔ)過(guò)程管理模塊用于存儲(chǔ)預(yù)定義的存儲(chǔ)過(guò)程以及根據(jù)數(shù)據(jù)采集模塊的指令調(diào)用并運(yùn)行存儲(chǔ)過(guò)程,從原始數(shù)據(jù)存儲(chǔ)模塊讀取原始數(shù)據(jù),并對(duì)讀取的原始數(shù)據(jù)進(jìn)行預(yù)處理,從而生成報(bào)表數(shù)據(jù)輸出至數(shù)據(jù)采集模塊。利用該系統(tǒng)進(jìn)行報(bào)表數(shù)據(jù)采集的過(guò)程如下首先,在數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程管理模塊中保存預(yù)定義的存儲(chǔ)過(guò)程;其次,數(shù)據(jù)采集模塊根據(jù)來(lái)自外部的報(bào)表數(shù)據(jù)生成指令讀取保存的數(shù)據(jù)源定義;其中,數(shù)據(jù)源定義包括調(diào)用存儲(chǔ)過(guò)程的查詢(xún)語(yǔ)句;再次,數(shù)據(jù)采集模塊向數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程調(diào)用運(yùn)行指令,并在該指令中攜帶獲取的數(shù)據(jù)源定義和接收到的用戶(hù)條件值;最后,存儲(chǔ)過(guò)程管理模塊根據(jù)接收到的數(shù)據(jù)源定義和用戶(hù)條件值調(diào)用并運(yùn)行相應(yīng)存儲(chǔ)過(guò)程,從原始數(shù)據(jù)存儲(chǔ)模塊中讀取保存的原始數(shù)據(jù),并對(duì)讀取的原始數(shù)據(jù)進(jìn)行預(yù)處理,得到報(bào)表數(shù)據(jù)。下面以數(shù)據(jù)庫(kù)中保存的原始數(shù)據(jù)為以15分鐘為單位的CPU性能數(shù)據(jù),需要獲取的報(bào)表數(shù)據(jù)為按小時(shí)匯總的CPU性能數(shù)據(jù)為例,詳細(xì)說(shuō)明采用上述方法進(jìn)行報(bào)表數(shù)據(jù)采集的過(guò)程首先,數(shù)據(jù)采集模塊獲取數(shù)據(jù)源定義中的查詢(xún)語(yǔ)句和用戶(hù)條件值;其中,數(shù)據(jù)源定義為查詢(xún)語(yǔ)句——存儲(chǔ)過(guò)程X;而用戶(hù)條件值為第1天至第5天。
其次,數(shù)據(jù)采集模塊向數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程調(diào)用運(yùn)行指令,并在指令中攜帶上述查詢(xún)語(yǔ)句和用戶(hù)條件值。
再次,存儲(chǔ)過(guò)程管理模塊接收到指令后,根據(jù)查詢(xún)語(yǔ)句調(diào)用保存的用于實(shí)現(xiàn)按小時(shí)匯總CPU性能數(shù)據(jù)的存儲(chǔ)過(guò)程X,并將用戶(hù)條件值通過(guò)存儲(chǔ)過(guò)程X的相應(yīng)參數(shù)接口輸入到存儲(chǔ)過(guò)程X中。
其中,存儲(chǔ)過(guò)程X主要包括如下靜態(tài)語(yǔ)句部分a、查詢(xún)以15分鐘為單位的CPU性能數(shù)據(jù);
b、將查詢(xún)到的CPU性能數(shù)據(jù)存放于數(shù)據(jù)庫(kù)臨時(shí)表中;c、從數(shù)據(jù)庫(kù)臨時(shí)表中以小時(shí)為單位將性能數(shù)據(jù)匯總輸出。
而上述將用戶(hù)條件值輸入到存儲(chǔ)過(guò)程中具體包括將用戶(hù)條件值,即第1天至第5天插入a語(yǔ)句的相應(yīng)參數(shù)接口,從而使得a語(yǔ)句能夠執(zhí)行從數(shù)據(jù)庫(kù)的原始數(shù)據(jù)中查詢(xún)第1天至第5天的CPU性能數(shù)據(jù)的步驟。
最后,存儲(chǔ)過(guò)程管理模塊運(yùn)行存儲(chǔ)過(guò)程X,執(zhí)行相應(yīng)的從原始數(shù)據(jù)存儲(chǔ)模塊中讀取保存的原始數(shù)據(jù)、對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理以及生成報(bào)表數(shù)據(jù)的過(guò)程。
上述過(guò)程說(shuō)明了獲取按小時(shí)匯總的CPU性能數(shù)據(jù)的過(guò)程,而當(dāng)要獲取按天匯總的CPU性能數(shù)據(jù)時(shí),則需要調(diào)用預(yù)定義的用于實(shí)現(xiàn)按天匯總的CPU性能數(shù)據(jù)的存儲(chǔ)過(guò)程Y,然后同樣按照上述過(guò)程進(jìn)行實(shí)現(xiàn)。其中,存儲(chǔ)過(guò)程Y所包含的靜態(tài)語(yǔ)句為A、查詢(xún)以15分鐘為單位的CPU性能數(shù)據(jù);B、將查詢(xún)到的CPU性能數(shù)據(jù)存放于數(shù)據(jù)庫(kù)臨時(shí)表中;C、從數(shù)據(jù)庫(kù)臨時(shí)表中以天為單位將性能數(shù)據(jù)匯總輸出。
可以看出上述存儲(chǔ)過(guò)程X的前兩個(gè)語(yǔ)句a和b與存儲(chǔ)過(guò)程Y的前兩個(gè)語(yǔ)句A和B分別相同,因此系統(tǒng)需要對(duì)預(yù)定義的不同存儲(chǔ)過(guò)程的相同靜態(tài)語(yǔ)句進(jìn)行重復(fù)保存和重復(fù)維護(hù),造成系統(tǒng)的冗佘處理負(fù)擔(dān)和對(duì)系統(tǒng)存儲(chǔ)空間的冗余占用。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的一個(gè)目的在于提供一種報(bào)表數(shù)據(jù)采集系統(tǒng),解決現(xiàn)有技術(shù)中所存在的保存預(yù)定義存儲(chǔ)過(guò)程的重復(fù)靜態(tài)語(yǔ)句部分造成的系統(tǒng)處理負(fù)擔(dān)重以及冗余占用系統(tǒng)存儲(chǔ)空間的問(wèn)題。
本發(fā)明提供的報(bào)表數(shù)據(jù)采集系統(tǒng)主要包括數(shù)據(jù)庫(kù)、靜態(tài)語(yǔ)句存儲(chǔ)模塊和存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊;其中,該數(shù)據(jù)庫(kù)用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù);靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的靜態(tài)語(yǔ)句;存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程。
在上述系統(tǒng)中,進(jìn)一步包括數(shù)據(jù)源定義存儲(chǔ)模塊和數(shù)據(jù)采集模塊;其中,所述數(shù)據(jù)源定義存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的數(shù)據(jù)源參數(shù);所述數(shù)據(jù)采集模塊用于讀取存儲(chǔ)的數(shù)據(jù)源參數(shù),向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送該數(shù)據(jù)源參數(shù)和接收自外部的用戶(hù)條件值;并向數(shù)據(jù)庫(kù)發(fā)送生成的存儲(chǔ)過(guò)程,以及輸出數(shù)據(jù)庫(kù)返回的報(bào)表數(shù)據(jù);所述存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于根據(jù)接收到的數(shù)據(jù)源參數(shù)讀取存儲(chǔ)的靜態(tài)語(yǔ)句,并基于該靜態(tài)語(yǔ)句、數(shù)據(jù)源參數(shù)和用戶(hù)條件值生成存儲(chǔ)過(guò)程。
在上述系統(tǒng)中,所述數(shù)據(jù)庫(kù)包括原始數(shù)據(jù)存儲(chǔ)模塊和存儲(chǔ)過(guò)程管理模塊;其中,所述原始數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)原始數(shù)據(jù);所述存儲(chǔ)過(guò)程管理模塊用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,執(zhí)行讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù)的操作。
在上述系統(tǒng)中,進(jìn)一步包括數(shù)據(jù)源定義存儲(chǔ)模塊;其中,所述數(shù)據(jù)源定義存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的視圖部分操作語(yǔ)句;所述存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述數(shù)據(jù)庫(kù)用于通過(guò)運(yùn)行生成的實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程對(duì)原始數(shù)據(jù)執(zhí)行數(shù)據(jù)部分操作,并通過(guò)運(yùn)行視圖部分操作語(yǔ)句對(duì)執(zhí)行上述數(shù)據(jù)部分操作得到的結(jié)果數(shù)據(jù)執(zhí)行視圖部分操作,生成報(bào)表數(shù)據(jù)。
在上述系統(tǒng)中,所述數(shù)據(jù)源定義存儲(chǔ)模塊進(jìn)一步用于存儲(chǔ)預(yù)定義的數(shù)據(jù)源參數(shù);且該系統(tǒng)進(jìn)一步包括數(shù)據(jù)采集模塊;其中,所述數(shù)據(jù)采集模塊用于從數(shù)據(jù)源定義存儲(chǔ)模塊讀取數(shù)據(jù)源參數(shù)和視圖部分操作語(yǔ)句,該視圖部分操作語(yǔ)句為臨時(shí)表查詢(xún)語(yǔ)句;以及向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送數(shù)據(jù)源參數(shù)和接收自外部的用戶(hù)條件值;并向數(shù)據(jù)庫(kù)發(fā)送生成的存儲(chǔ)過(guò)程和所述臨時(shí)表查詢(xún)語(yǔ)句,輸出數(shù)據(jù)庫(kù)返回的報(bào)表數(shù)據(jù);所述存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取靜態(tài)語(yǔ)句存儲(chǔ)模塊中存儲(chǔ)的靜態(tài)語(yǔ)句,并基于接收到的數(shù)據(jù)源參數(shù)、用戶(hù)條件值生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述數(shù)據(jù)庫(kù)用于創(chuàng)建接收到的實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行創(chuàng)建的存儲(chǔ)過(guò)程實(shí)現(xiàn)創(chuàng)建空臨時(shí)表、讀取存儲(chǔ)的原始數(shù)據(jù),向創(chuàng)建的空臨時(shí)表中插入原始數(shù)據(jù)的操作;以及通過(guò)運(yùn)行接收到的臨時(shí)表查詢(xún)語(yǔ)句對(duì)該臨時(shí)表中的數(shù)據(jù)進(jìn)行操作,生成報(bào)表數(shù)據(jù),并返回生成的報(bào)表數(shù)據(jù)。
在上述系統(tǒng)中,所述數(shù)據(jù)庫(kù)包括原始數(shù)據(jù)存儲(chǔ)模塊、存儲(chǔ)過(guò)程管理模塊和臨時(shí)表管理模塊;其中,所述原始數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)原始數(shù)據(jù);所述存儲(chǔ)過(guò)程管理模塊用于創(chuàng)建接收到的存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行創(chuàng)建的存儲(chǔ)過(guò)程實(shí)現(xiàn)從原始數(shù)據(jù)存儲(chǔ)模塊中讀取原始數(shù)據(jù),并向臨時(shí)表管理模塊發(fā)送空臨時(shí)表創(chuàng)建指令、原始數(shù)據(jù)和原始數(shù)據(jù)插入指令;所述臨時(shí)表管理模塊用于創(chuàng)建空臨時(shí)表,并向該空臨時(shí)表中插入原始數(shù)據(jù);以及通過(guò)運(yùn)行臨時(shí)表查詢(xún)語(yǔ)句,對(duì)該臨時(shí)表中的數(shù)據(jù)進(jìn)行操作,生成報(bào)表數(shù)據(jù),并返回生成的報(bào)表數(shù)據(jù)。
本發(fā)明的另一個(gè)目的在于提供一種報(bào)表數(shù)據(jù)采集方法,該方法包括如下步驟a、讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程;b、創(chuàng)建并運(yùn)行生成的存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù)。
在上述方法中,所述步驟a之前進(jìn)一步包括a0、接收來(lái)自外部的用戶(hù)條件值,讀取預(yù)定義并存儲(chǔ)的數(shù)據(jù)源參數(shù);所述步驟a包括根據(jù)讀取的數(shù)據(jù)源參數(shù)讀取存儲(chǔ)的相應(yīng)靜態(tài)語(yǔ)句,并將數(shù)據(jù)源參數(shù)和用戶(hù)條件值通過(guò)參數(shù)接口傳入讀取的靜態(tài)語(yǔ)句中,然后將靜態(tài)語(yǔ)句拼裝成存儲(chǔ)過(guò)程。
在上述方法中,進(jìn)一步包括預(yù)定義并存儲(chǔ)視圖部分操作語(yǔ)句;所述步驟a0進(jìn)一步包括讀取存儲(chǔ)的視圖部分操作語(yǔ)句;所述步驟a包括生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;
所述步驟b包括創(chuàng)建生成的實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行該存儲(chǔ)過(guò)程對(duì)原始數(shù)據(jù)執(zhí)行數(shù)據(jù)部分操作,以及通過(guò)運(yùn)行視圖部分操作語(yǔ)句對(duì)執(zhí)行上述數(shù)據(jù)部分操作得到的結(jié)果數(shù)據(jù)執(zhí)行視圖部分操作,生成報(bào)表數(shù)據(jù)。
在上述方法中,所述視圖部分操作語(yǔ)句為臨時(shí)表查詢(xún)語(yǔ)句;步驟a中,所述生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程的步驟包括基于接收到的數(shù)據(jù)源參數(shù)、用戶(hù)條件值生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述步驟b包括b1、創(chuàng)建并運(yùn)行所述實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程,實(shí)現(xiàn)創(chuàng)建空臨時(shí)表,讀取原始數(shù)據(jù),并向創(chuàng)建的空臨時(shí)表中插入原始數(shù)據(jù);b2、運(yùn)行所述臨時(shí)表查詢(xún)語(yǔ)句,對(duì)所述臨時(shí)表中的數(shù)據(jù)進(jìn)行操作,生成報(bào)表數(shù)據(jù)。
在上述方法中,步驟b2中所述的操作包括對(duì)臨時(shí)表中的原始數(shù)據(jù)進(jìn)行豎向整合、橫向整合以及字符串運(yùn)算。
在上述方法中,所述步驟b之后進(jìn)一步包括刪除創(chuàng)建的存儲(chǔ)過(guò)程。
綜上所述,本發(fā)明采取在數(shù)據(jù)采集系統(tǒng)中包括數(shù)據(jù)庫(kù)、靜態(tài)語(yǔ)句存儲(chǔ)模塊和存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊;其中,數(shù)據(jù)庫(kù)用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù);靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的靜態(tài)語(yǔ)句;存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程。而且本發(fā)明還基于上述系統(tǒng)采取將數(shù)據(jù)部分操作和視圖部分操作分別由存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊和數(shù)據(jù)采集模塊進(jìn)行實(shí)現(xiàn),從而使最終報(bào)表用戶(hù)可以定制操作,并降低了開(kāi)發(fā)和維護(hù)的工作量。另外,本發(fā)明還公開(kāi)了相應(yīng)的報(bào)表數(shù)據(jù)采集方法。避免了現(xiàn)有技術(shù)采取預(yù)定義存儲(chǔ)過(guò)程的方式所導(dǎo)致的系統(tǒng)處理負(fù)擔(dān)重和冗余占用系統(tǒng)存儲(chǔ)空間的缺陷,優(yōu)化了報(bào)表數(shù)據(jù)采集過(guò)程。


圖1為現(xiàn)有技術(shù)的報(bào)表數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)示意圖。
圖2為根據(jù)本發(fā)明一實(shí)施例的報(bào)表數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)示意圖。
圖3為根據(jù)本發(fā)明另一實(shí)施例的報(bào)表數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)示意圖。
圖4為根據(jù)本發(fā)明一實(shí)施例的報(bào)表數(shù)據(jù)采集方法流程圖。
圖5為根據(jù)本發(fā)明另一實(shí)施例的報(bào)表數(shù)據(jù)采集方法流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。
本發(fā)明的核心思想是在數(shù)據(jù)采集系統(tǒng)中包括數(shù)據(jù)庫(kù)、靜態(tài)語(yǔ)句存儲(chǔ)模塊和存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊;其中,數(shù)據(jù)庫(kù)用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù);靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的靜態(tài)語(yǔ)句;存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程。從而避免現(xiàn)有技術(shù)中采取預(yù)定義存儲(chǔ)過(guò)程的方式所導(dǎo)致的系統(tǒng)處理負(fù)擔(dān)重和冗余占用系統(tǒng)存儲(chǔ)空間的缺陷,優(yōu)化報(bào)表數(shù)據(jù)采集過(guò)程。
下面通過(guò)具體實(shí)施例并結(jié)合附圖詳細(xì)說(shuō)明本發(fā)明。
如圖2所示,根據(jù)本發(fā)明一實(shí)施例的報(bào)表數(shù)據(jù)采集系統(tǒng)包括數(shù)據(jù)源定義存儲(chǔ)模塊、數(shù)據(jù)采集模塊和數(shù)據(jù)庫(kù),且數(shù)據(jù)庫(kù)包括原始數(shù)據(jù)存儲(chǔ)模塊和存儲(chǔ)過(guò)程管理模塊;另外,本發(fā)明系統(tǒng)還進(jìn)一步包括靜態(tài)語(yǔ)句存儲(chǔ)模塊和存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊。其中,數(shù)據(jù)源定義存儲(chǔ)模塊用于保存數(shù)據(jù)源定義;其中,數(shù)據(jù)源定義包括數(shù)據(jù)源參數(shù),數(shù)據(jù)源參數(shù)定義了返回字段屬性,如背景技術(shù)例子中所述的業(yè)務(wù)類(lèi)型(business type)屬性和匯總類(lèi)型屬性等。
數(shù)據(jù)采集模塊用于根據(jù)接收自外部的報(bào)表數(shù)據(jù)生成指令從數(shù)據(jù)源定義存儲(chǔ)模塊中讀取數(shù)據(jù)源定義,并將讀取的數(shù)據(jù)源定義和接收到的報(bào)表數(shù)據(jù)生成指令中所包含的用戶(hù)條件值攜帶于存儲(chǔ)過(guò)程生成指令中發(fā)送至存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊;以及從存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊獲取生成的存儲(chǔ)過(guò)程,并向數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令和存儲(chǔ)過(guò)程;以及在接收到來(lái)自存儲(chǔ)過(guò)程管理模塊的報(bào)表數(shù)據(jù)后,輸出報(bào)表數(shù)據(jù),并向存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程刪除指令。其中,所述用戶(hù)條件值與現(xiàn)有技術(shù)的用戶(hù)條件值完全相同,即用于傳輸用戶(hù)的指定信息,如第1天至第5天等。
靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)用來(lái)生成存儲(chǔ)過(guò)程的靜態(tài)語(yǔ)句。
存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于在接收到數(shù)據(jù)采集模塊的存儲(chǔ)過(guò)程生成指令后,根據(jù)指令中攜帶的數(shù)據(jù)源定義從靜態(tài)語(yǔ)句存儲(chǔ)模塊讀取相應(yīng)的靜態(tài)語(yǔ)句,然后基于讀取的靜態(tài)語(yǔ)句、數(shù)據(jù)源定義以及用戶(hù)條件值生成存儲(chǔ)過(guò)程。
其中,上述生成存儲(chǔ)過(guò)程的具體過(guò)程為存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊將用戶(hù)條件值通過(guò)參數(shù)接口傳入讀取的相應(yīng)靜態(tài)語(yǔ)句中,然后將讀取的靜態(tài)語(yǔ)句拼裝成存儲(chǔ)過(guò)程。
原始數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)原始數(shù)據(jù)。
存儲(chǔ)過(guò)程管理模塊用于根據(jù)數(shù)據(jù)采集模塊的存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令在數(shù)據(jù)庫(kù)中創(chuàng)建并運(yùn)行接收到的存儲(chǔ)過(guò)程,從原始數(shù)據(jù)存儲(chǔ)模塊讀取原始數(shù)據(jù),對(duì)讀取的原始數(shù)據(jù)進(jìn)行預(yù)處理,生成報(bào)表數(shù)據(jù)輸出至數(shù)據(jù)采集模塊;以及在接收到數(shù)據(jù)采集模塊的存儲(chǔ)過(guò)程刪除指令后,從數(shù)據(jù)庫(kù)中刪除相應(yīng)存儲(chǔ)過(guò)程。
以上說(shuō)明了根據(jù)本發(fā)明一實(shí)施例的報(bào)表數(shù)據(jù)采集系統(tǒng)的組成結(jié)構(gòu),即采取由存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊生成能夠獲取到最終報(bào)表數(shù)據(jù)的存儲(chǔ)過(guò)程,最終通過(guò)運(yùn)行該存儲(chǔ)過(guò)程而得到報(bào)表數(shù)據(jù)。然而,通常生成的存儲(chǔ)過(guò)程主要包括以下幾個(gè)組成部分(1)創(chuàng)建臨時(shí)表;(2)查詢(xún)?cè)紨?shù)據(jù),并將查詢(xún)到的原始數(shù)據(jù)存放在臨時(shí)表中;(3)對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行豎向整合,即匯總,平均等(4)對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行橫向整合,即進(jìn)行字段之間的計(jì)算。
(5)對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行字符串運(yùn)算,如保留兩位小數(shù)等。
(6)使用查詢(xún)語(yǔ)句從臨時(shí)表中返回最終用于報(bào)表生成的數(shù)據(jù)。
在上述組成部分中,第(1)和(2)部分,即創(chuàng)建和填充臨時(shí)表的操作可以作為數(shù)據(jù)部分操作,數(shù)據(jù)部分操作不考慮數(shù)據(jù)的輸出格式,在不同報(bào)表中的處理過(guò)程相對(duì)比較固定,維護(hù)量不大,因此可以采取用存儲(chǔ)過(guò)程生成模塊實(shí)現(xiàn)數(shù)據(jù)部分。而第(3)、(4)、(5)和(6)部分,即對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行整合的操作可以作為視圖部分操作,視圖部分操作側(cè)重于根據(jù)報(bào)表需要對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行各種各樣的格式調(diào)整,在不同報(bào)表中的處理過(guò)程通常不固定,因此可以根據(jù)需要調(diào)整數(shù)據(jù)源存儲(chǔ)模塊中的數(shù)據(jù)源定義,然后由數(shù)據(jù)采集模塊根據(jù)數(shù)據(jù)源定義來(lái)實(shí)現(xiàn)。而且調(diào)整數(shù)據(jù)源定義無(wú)需重新編譯代碼,因此可以實(shí)現(xiàn)最終用戶(hù)的定制操作,降低開(kāi)發(fā)和維護(hù)的工作量。
下面通過(guò)本發(fā)明另一實(shí)施例說(shuō)明上述數(shù)據(jù)部分與視圖部分分離的報(bào)表數(shù)據(jù)采集系統(tǒng),該系統(tǒng)組成結(jié)構(gòu)如圖3所示,主要包括數(shù)據(jù)源定義存儲(chǔ)模塊、數(shù)據(jù)采集模塊、靜態(tài)語(yǔ)句存儲(chǔ)模塊、存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊和數(shù)據(jù)庫(kù),且數(shù)據(jù)庫(kù)包括原始數(shù)據(jù)存儲(chǔ)模塊和存儲(chǔ)過(guò)程管理模塊;與上述實(shí)施例中系統(tǒng)不同的是,該系統(tǒng)還進(jìn)一步包括臨時(shí)表生成模塊;且在數(shù)據(jù)庫(kù)中進(jìn)一步包括臨時(shí)表管理模塊。其中,數(shù)據(jù)源定義存儲(chǔ)模塊用于保存數(shù)據(jù)源定義;其中,數(shù)據(jù)源定義包括數(shù)據(jù)源參數(shù)和臨時(shí)表查詢(xún)語(yǔ)句,數(shù)據(jù)源參數(shù)定義了返回字段屬性,如背景技術(shù)例子中所述的業(yè)務(wù)類(lèi)型(business type)屬性和匯總類(lèi)型屬性等。臨時(shí)表查詢(xún)語(yǔ)句是由開(kāi)發(fā)人員根據(jù)所需臨時(shí)表結(jié)構(gòu)預(yù)定義的,通過(guò)該臨時(shí)表查詢(xún)語(yǔ)句實(shí)現(xiàn)對(duì)臨時(shí)表中數(shù)據(jù)的各視圖部分操作處理,主要包括豎向聚合、橫向聚合和字符串運(yùn)算等。臨時(shí)表查詢(xún)語(yǔ)句可以是SQL語(yǔ)句,且該臨時(shí)表查詢(xún)語(yǔ)句中可以使用固定字符串,如@Temp Table等作為缺省臨時(shí)表名。
數(shù)據(jù)采集模塊用于根據(jù)接收自外部的報(bào)表數(shù)據(jù)生成指令從數(shù)據(jù)源定義存儲(chǔ)模塊中讀取數(shù)據(jù)源參數(shù)和臨時(shí)表生成語(yǔ)句,并向臨時(shí)表生成模塊發(fā)送臨時(shí)表生成指令、讀取的數(shù)據(jù)源參數(shù)和接收到的報(bào)表數(shù)據(jù)生成指令中包含的用戶(hù)條件值;以及從臨時(shí)表生成模塊接收臨時(shí)表名,并用接收到的臨時(shí)表名替換獲取的臨時(shí)表查詢(xún)語(yǔ)句中的缺省臨時(shí)表名,然后向臨時(shí)表管理模塊發(fā)送包含相應(yīng)臨時(shí)表名的臨時(shí)表查詢(xún)語(yǔ)句。
其中,用戶(hù)條件值與現(xiàn)有技術(shù)的用戶(hù)條件值完全相同,用于傳輸用戶(hù)的指定信息,如第1天至第5天等。
臨時(shí)表生成模塊用于接收數(shù)據(jù)采集模塊發(fā)送的臨時(shí)表生成指令、數(shù)據(jù)源定義和用戶(hù)條件值,動(dòng)態(tài)分配一個(gè)臨時(shí)表名,并向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送存儲(chǔ)過(guò)程生成指令、數(shù)據(jù)源定義、用戶(hù)條件值和分配的臨時(shí)表名;以及從存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊獲取生成的存儲(chǔ)過(guò)程,并向數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令和該存儲(chǔ)過(guò)程;以及在接收到存儲(chǔ)過(guò)程管理模塊返回的確認(rèn)消息后,向數(shù)據(jù)采集模塊發(fā)送分配的臨時(shí)表名;以及向存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程刪除指令。
靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)靜態(tài)語(yǔ)句。
存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于在接收到臨時(shí)表生成模塊發(fā)送的存儲(chǔ)過(guò)程生成指令、數(shù)據(jù)源定義、用戶(hù)條件值和臨時(shí)表名后,從靜態(tài)語(yǔ)句存儲(chǔ)模塊中獲取相應(yīng)靜態(tài)語(yǔ)句,然后基于獲取的靜態(tài)語(yǔ)句、接收到的數(shù)據(jù)源定義、用戶(hù)條件值和臨時(shí)表名生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程。其中,實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程主要包括如下部分A、以接收到的臨時(shí)表名創(chuàng)建一個(gè)空臨時(shí)表;B、讀取原始數(shù)據(jù);C、將讀取的原始數(shù)據(jù)插入創(chuàng)建的空臨時(shí)表中。
原始數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)原始數(shù)據(jù)。
存儲(chǔ)過(guò)程管理模塊用于接收存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令和存儲(chǔ)過(guò)程,創(chuàng)建存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行創(chuàng)建的存儲(chǔ)過(guò)程實(shí)現(xiàn)向臨時(shí)表管理模塊發(fā)送包含相應(yīng)臨時(shí)表名的臨時(shí)表創(chuàng)建指令、從原始數(shù)據(jù)存儲(chǔ)模塊中讀取存儲(chǔ)的原始數(shù)據(jù),并向臨時(shí)表管理模塊發(fā)送原始數(shù)據(jù)插入指令和原始數(shù)據(jù);以及向臨時(shí)表生成模塊轉(zhuǎn)發(fā)接收到的確認(rèn)消息,并在接收到存儲(chǔ)過(guò)程刪除指令后,刪除創(chuàng)建的存儲(chǔ)過(guò)程。
臨時(shí)表管理模塊用于根據(jù)臨時(shí)表創(chuàng)建指令創(chuàng)建具有相應(yīng)臨時(shí)表名的空臨時(shí)表,以及根據(jù)原始數(shù)據(jù)插入指令將接收到的原始數(shù)據(jù)插入創(chuàng)建的空臨時(shí)表中,并存儲(chǔ)該臨時(shí)表;以及通過(guò)運(yùn)行接收到的臨時(shí)表查詢(xún)語(yǔ)句,實(shí)現(xiàn)從存儲(chǔ)的臨時(shí)表中查找臨時(shí)表名與臨時(shí)表查詢(xún)語(yǔ)句中的臨時(shí)表名相同的臨時(shí)表,并對(duì)查找到的臨時(shí)表中的數(shù)據(jù)進(jìn)行變換或運(yùn)算操作,生成報(bào)表數(shù)據(jù);以及向數(shù)據(jù)采集模塊返回生成的報(bào)表數(shù)據(jù)。
以上說(shuō)明了本發(fā)明報(bào)表數(shù)據(jù)采集系統(tǒng)的組成結(jié)構(gòu),下面說(shuō)明根據(jù)本發(fā)明的報(bào)表數(shù)據(jù)采集方法,該方法包括預(yù)先保存數(shù)據(jù)源定義和靜態(tài)語(yǔ)句,該方法流程如圖4所示,具體包括如下步驟步驟401當(dāng)數(shù)據(jù)采集模塊接收到來(lái)自外部的攜帶用戶(hù)條件值的報(bào)表數(shù)據(jù)生成指令后,根據(jù)該指令從數(shù)據(jù)源定義存儲(chǔ)模塊中讀取保存的相應(yīng)數(shù)據(jù)源定義,然后向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送存儲(chǔ)過(guò)程生成指令,并在指令中攜帶讀取的數(shù)據(jù)源定義和接收到的用戶(hù)條件值。
本步驟中,數(shù)據(jù)源定義包括數(shù)據(jù)源參數(shù)——返回字段屬性,如背景技術(shù)的例子中所述,返回字段屬性包括業(yè)務(wù)類(lèi)型屬性和匯總類(lèi)型屬性等。用戶(hù)條件值則與現(xiàn)有技術(shù)的用戶(hù)條件值完全相同,用于傳輸用戶(hù)的指定信息,如第1天至第5天等。
步驟402存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊接收到數(shù)據(jù)采集模塊的存儲(chǔ)過(guò)程生成指令后,根據(jù)指令中攜帶的數(shù)據(jù)源定義從靜態(tài)語(yǔ)句存儲(chǔ)模塊讀取相應(yīng)的靜態(tài)語(yǔ)句,然后基于接收到的數(shù)據(jù)源定義、用戶(hù)條件值和靜態(tài)語(yǔ)句生成存儲(chǔ)過(guò)程。
其中,上述生成存儲(chǔ)過(guò)程的具體過(guò)程為存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊將用戶(hù)條件值通過(guò)參數(shù)接口傳入讀取的相應(yīng)靜態(tài)語(yǔ)句,然后將讀取的靜態(tài)語(yǔ)句拼裝成存儲(chǔ)過(guò)程。
步驟403數(shù)據(jù)采集模塊通過(guò)相應(yīng)接口,如getSPScript接口從存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊獲取生成的存儲(chǔ)過(guò)程,然后向數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令和該存儲(chǔ)過(guò)程。
步驟404存儲(chǔ)過(guò)程管理模塊根據(jù)數(shù)據(jù)采集模塊的存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令在數(shù)據(jù)庫(kù)中創(chuàng)建并運(yùn)行接收到的存儲(chǔ)過(guò)程,從原始數(shù)據(jù)存儲(chǔ)模塊讀取原始數(shù)據(jù),并對(duì)讀取的原始數(shù)據(jù)進(jìn)行預(yù)處理,最后生成報(bào)表數(shù)據(jù)輸出至數(shù)據(jù)采集模塊。
步驟405數(shù)據(jù)采集模塊接收到來(lái)自存儲(chǔ)過(guò)程管理模塊的報(bào)表數(shù)據(jù)后,輸出報(bào)表數(shù)據(jù),并向存儲(chǔ)過(guò)程管理模塊發(fā)送刪除存儲(chǔ)過(guò)程指令;存儲(chǔ)過(guò)程管理模塊接收到數(shù)據(jù)采集模塊的存儲(chǔ)過(guò)程刪除指令后,從數(shù)據(jù)庫(kù)中刪除創(chuàng)建的存儲(chǔ)過(guò)程。
以上說(shuō)明了根據(jù)本發(fā)明一實(shí)施例的報(bào)表數(shù)據(jù)采集方法,下面以獲取按小時(shí)匯總的CPU性能數(shù)據(jù)為例詳細(xì)說(shuō)明上述報(bào)表數(shù)據(jù)采集過(guò)程首先,根據(jù)上述步驟401,數(shù)據(jù)采集模塊獲取數(shù)據(jù)源定義和用戶(hù)條件值,然后將獲取的數(shù)據(jù)源定義和用戶(hù)條件值發(fā)送至存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊。
其中,數(shù)據(jù)源定義包括數(shù)據(jù)源參數(shù)——返回字段屬性;返回字段屬性包括業(yè)務(wù)類(lèi)型=獲取匯總的CPU性能數(shù)據(jù);匯總類(lèi)型=小時(shí)。
用戶(hù)條件值為第1天至第5天。
其次,根據(jù)上述步驟402,存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊接收到數(shù)據(jù)源定義和用戶(hù)條件值后,根據(jù)數(shù)據(jù)源定義中的數(shù)據(jù)源參數(shù),即返回字段屬性中的業(yè)務(wù)類(lèi)型——獲取匯總的CPU性能數(shù)據(jù)讀取靜態(tài)語(yǔ)句存儲(chǔ)模塊中的保存的相應(yīng)靜態(tài)語(yǔ)句,然后向讀取的靜態(tài)語(yǔ)句傳入?yún)?shù),最后將靜態(tài)語(yǔ)句拼裝成存儲(chǔ)過(guò)程。
其中,讀取靜態(tài)語(yǔ)句、傳入?yún)?shù)以及拼裝靜態(tài)語(yǔ)句的具體步驟包括(一)、存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊初始化一個(gè)字符串,并根據(jù)業(yè)務(wù)類(lèi)型查詢(xún)靜態(tài)語(yǔ)句存儲(chǔ)模塊中保存的靜態(tài)語(yǔ)句,查詢(xún)到的靜態(tài)語(yǔ)句具體包括a、查詢(xún)以15分鐘為單位的CPU性能數(shù)據(jù);b、將查詢(xún)到的CPU性能數(shù)據(jù)存放于數(shù)據(jù)庫(kù)臨時(shí)表中;c、從數(shù)據(jù)庫(kù)臨時(shí)表中將性能數(shù)據(jù)匯總輸出。
(二)、存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊將用戶(hù)條件值——第1天至第5天通過(guò)參數(shù)接口傳入上述靜態(tài)語(yǔ)句a中,從而使靜態(tài)語(yǔ)句a能夠執(zhí)行查詢(xún)從第1天至第5天的CPU性能數(shù)據(jù)的操作,最后將靜態(tài)語(yǔ)句a置于上述初始化的字符串之后。
(三)、存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊將查詢(xún)到的靜態(tài)語(yǔ)句b直接置于上述靜態(tài)語(yǔ)句a之后。
(四)、存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊將數(shù)據(jù)源參數(shù)中的匯總類(lèi)型——小時(shí)通過(guò)參數(shù)接口傳入查詢(xún)到的上述靜態(tài)語(yǔ)句c中,從而使靜態(tài)語(yǔ)句c能夠執(zhí)行按小時(shí)匯總查詢(xún)到的CPU性能數(shù)據(jù)的操作,最后將靜態(tài)語(yǔ)句c置于上述靜態(tài)語(yǔ)句b之后,生成所需存儲(chǔ)過(guò)程。
最后,執(zhí)行上述步驟403至步驟405,最終獲得第1天至第5天按小時(shí)匯總的CPU性能數(shù)據(jù)。
以上說(shuō)明了根據(jù)本發(fā)明一具體實(shí)施例的報(bào)表數(shù)據(jù)采集方法,下面說(shuō)明數(shù)據(jù)部分與視圖部分分離的報(bào)表數(shù)據(jù)采集方法,該方法包括由報(bào)表開(kāi)發(fā)人員根據(jù)所需臨時(shí)表結(jié)構(gòu)預(yù)先定義并在數(shù)據(jù)源定義模塊中保存實(shí)現(xiàn)數(shù)據(jù)視圖部分操作,即豎向整合,橫向整合以及字符串運(yùn)算的臨時(shí)表查詢(xún)語(yǔ)句,即SQL語(yǔ)句。并在該臨時(shí)表查詢(xún)語(yǔ)句中使用固定字符串,如@Temp Table作為缺省臨時(shí)表名。該方法流程如圖5所示,具體包括如下步驟步驟501當(dāng)數(shù)據(jù)采集模塊接收到來(lái)自外部的攜帶用戶(hù)條件值的報(bào)表數(shù)據(jù)生成指令后,根據(jù)該指令從數(shù)據(jù)源定義存儲(chǔ)模塊中讀取保存的數(shù)據(jù)源參數(shù)和臨時(shí)表查詢(xún)語(yǔ)句,然后向臨時(shí)表生成模塊發(fā)送臨時(shí)表生成指令、數(shù)據(jù)源參數(shù)和用戶(hù)條件值。
步驟502臨時(shí)表生成模塊接收到臨時(shí)表生成指令、數(shù)據(jù)源定義和用戶(hù)條件值后,動(dòng)態(tài)分配一個(gè)臨時(shí)表名,然后向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送存儲(chǔ)過(guò)程生成指令、數(shù)據(jù)源參數(shù)、用戶(hù)條件值和分配的臨時(shí)表名。
其中,分配臨時(shí)表名的方式可以為任意選取一個(gè)字符串。
步驟503存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊接收到該存儲(chǔ)過(guò)程生成指令、數(shù)據(jù)源參數(shù)、用戶(hù)條件值和臨時(shí)表名后,根據(jù)數(shù)據(jù)源參數(shù)從靜態(tài)語(yǔ)句存儲(chǔ)模塊讀取相應(yīng)的靜態(tài)語(yǔ)句,然后基于讀取的靜態(tài)語(yǔ)句、接收到的數(shù)據(jù)源參數(shù)、用戶(hù)條件值和臨時(shí)表名生成存儲(chǔ)過(guò)程。
其中,生成的存儲(chǔ)過(guò)程具體如下A、以臨時(shí)表名創(chuàng)建一個(gè)空臨時(shí)表;B、查詢(xún)?cè)紨?shù)據(jù);C、將原始數(shù)據(jù)插入創(chuàng)建的空臨時(shí)表中。
上述生成存儲(chǔ)過(guò)程的具體過(guò)程為將臨時(shí)表名和用戶(hù)條件值分別通過(guò)相應(yīng)參數(shù)接口傳入讀取的相應(yīng)靜態(tài)語(yǔ)句中,然后將讀取的靜態(tài)語(yǔ)句拼裝成存儲(chǔ)過(guò)程。
步驟504臨時(shí)表生成模塊從存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊獲取生成的存儲(chǔ)過(guò)程,并向數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程管理模塊發(fā)送存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令和該存儲(chǔ)過(guò)程。
步驟505存儲(chǔ)過(guò)程管理模塊接收到存儲(chǔ)過(guò)程創(chuàng)建運(yùn)行指令和存儲(chǔ)過(guò)程后,首先創(chuàng)建存儲(chǔ)過(guò)程,然后運(yùn)行創(chuàng)建的存儲(chǔ)過(guò)程,即執(zhí)行向臨時(shí)表管理模塊發(fā)送以相應(yīng)臨時(shí)表名創(chuàng)建一個(gè)空臨時(shí)表,接著從原始數(shù)據(jù)存儲(chǔ)模塊中讀取原始數(shù)據(jù),然后向臨時(shí)表管理模塊發(fā)送原始數(shù)據(jù)插入指令和讀取的原始數(shù)據(jù)的操作。
步驟506臨時(shí)表管理模塊接收到臨時(shí)表創(chuàng)建指令后,執(zhí)行以相應(yīng)臨時(shí)表名創(chuàng)建一個(gè)空臨時(shí)表,并在接收到原始數(shù)據(jù)插入指令和原始數(shù)據(jù)后,執(zhí)行向創(chuàng)建的空臨時(shí)表中插入相應(yīng)原始數(shù)據(jù)的操作,然后保存該臨時(shí)表,并向存儲(chǔ)過(guò)程管理模塊返回確認(rèn)消息。
步驟507存儲(chǔ)過(guò)程管理模塊向臨時(shí)表生成模塊轉(zhuǎn)發(fā)接收到的確認(rèn)消息;臨時(shí)表生成模塊接到確認(rèn)消息后,向數(shù)據(jù)采集模塊發(fā)送分配的相應(yīng)臨時(shí)表名。
步驟508數(shù)據(jù)采集模塊用接收到的臨時(shí)表名替換所獲取臨時(shí)表查詢(xún)語(yǔ)句中的固定字符串,然后向臨時(shí)表管理模塊發(fā)送相應(yīng)臨時(shí)表查詢(xún)語(yǔ)句。
步驟509臨時(shí)表管理模塊運(yùn)行相應(yīng)臨時(shí)表查詢(xún)語(yǔ)句,即查詢(xún)保存的相應(yīng)臨時(shí)表,并根據(jù)臨時(shí)表查詢(xún)語(yǔ)句對(duì)查找到的臨時(shí)表中的數(shù)據(jù)進(jìn)行運(yùn)算或變換操作,然后向數(shù)據(jù)采集模塊返回最終得到的數(shù)據(jù),即報(bào)表數(shù)據(jù),結(jié)束本流程。
其中,查詢(xún)臨時(shí)表具體是指查找所保存臨時(shí)表的臨時(shí)表名中與臨時(shí)表查詢(xún)語(yǔ)句中的臨時(shí)表名相同的臨時(shí)表。而對(duì)查找到的臨時(shí)表進(jìn)行運(yùn)算或變換操作則具體是指對(duì)臨時(shí)表中數(shù)據(jù)進(jìn)行豎向整合、橫向整合以及字符串運(yùn)算等。
其中的豎向整合是指對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行分組(Group by)、分類(lèi)(Order by)、求和(Sum)以及取平均值(Avg)等操作。而橫向整合則是指對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行加、減、乘、除等運(yùn)算。字符串運(yùn)算是指對(duì)臨時(shí)表中的數(shù)據(jù)進(jìn)行取整和四舍五入等運(yùn)算。
以上說(shuō)明了根據(jù)本發(fā)明另一實(shí)施例的報(bào)表數(shù)據(jù)采集方法,下面以獲取不同型號(hào)交換機(jī)的呼叫成功率為例詳細(xì)說(shuō)明上述報(bào)表數(shù)據(jù)采集方法首先,根據(jù)上述步驟501,數(shù)據(jù)采集模塊接收來(lái)自用戶(hù)的報(bào)表數(shù)據(jù)生成指令,并從數(shù)據(jù)源定義存儲(chǔ)模塊讀取數(shù)據(jù)源定義,然后向臨時(shí)表生成模塊發(fā)送臨時(shí)表生成指令、數(shù)據(jù)源參數(shù)和用戶(hù)條件值。
其中,用戶(hù)條件值為第1天至第5天。
數(shù)據(jù)源參數(shù)為匯總類(lèi)型——小時(shí)。臨時(shí)表查詢(xún)語(yǔ)句為Select交換機(jī)ID,Sum(試占次數(shù)),Sum(接通次數(shù));Round(Sum(試占次數(shù))/Sum(接通次數(shù)),2)AS呼叫成功率;From@Temp Table;Groupby交換機(jī)ID。
其次,執(zhí)行上述步驟502至步驟505,即分配臨時(shí)表名,生成存儲(chǔ)過(guò)程以及創(chuàng)建運(yùn)行存儲(chǔ)過(guò)程的步驟,其中,在本實(shí)施例中分配的臨時(shí)表名為“#tmp_98723411”。
再次,根據(jù)上述步驟506,執(zhí)行由臨時(shí)表管理模塊創(chuàng)建一個(gè)空臨時(shí)表,并向創(chuàng)建的空臨時(shí)表中插入原始數(shù)據(jù)的操作。其中,插入原始數(shù)據(jù)之后的臨時(shí)表結(jié)構(gòu)如表1所示。

表1接著,執(zhí)行上述步驟507至509,而且在上述步驟508中所述的用臨時(shí)表名替換臨時(shí)表查詢(xún)語(yǔ)句中的缺省臨時(shí)表名,在本例中就是用臨時(shí)表名“#tmp_98723411”替換臨時(shí)表查詢(xún)語(yǔ)句中的“@Temp Table”。
另外,根據(jù)上述步驟509,臨時(shí)表管理模塊根據(jù)臨時(shí)表查詢(xún)語(yǔ)句中攜帶的臨時(shí)表名查找到表1為目標(biāo)臨時(shí)表,然后根據(jù)上述臨時(shí)表查詢(xún)語(yǔ)句對(duì)表1中的數(shù)據(jù)進(jìn)行豎向整合為按照交換機(jī)ID進(jìn)行分組匯總,得到各型號(hào)交換機(jī)進(jìn)行內(nèi)、外部呼叫之和,其結(jié)果如下表2所示

表2根據(jù)上述臨時(shí)表查詢(xún)語(yǔ)句對(duì)表2中的數(shù)據(jù)進(jìn)行橫向整合為增加一個(gè)呼叫成功率字段,而且呼叫成功率=接通次數(shù)/試占次數(shù),得到的結(jié)果如下表3所示

表3根據(jù)上述臨時(shí)表查詢(xún)語(yǔ)句,將表3中的呼叫成功率只保留前兩位小數(shù),即生成最終的報(bào)表數(shù)據(jù),所得結(jié)果如下表4所示

表4由此可見(jiàn),如果在另一張報(bào)表中想要對(duì)呼叫成功率取整,只需將數(shù)據(jù)源定義存儲(chǔ)模塊中存儲(chǔ)的臨時(shí)表查詢(xún)語(yǔ)句修改為“Select交換機(jī)ID,Sum(試占次數(shù)),Sum(接通次數(shù)),Round(Sum(試占次數(shù))/Sum(接通次數(shù))),AS呼叫成功率from@Temp Table Groupby交換機(jī)ID”,即只需修改Round函數(shù)的參數(shù)即可,而無(wú)需重新修改編譯存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊,從而減輕開(kāi)發(fā)維護(hù)的工作量。
總之,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種報(bào)表數(shù)據(jù)采集系統(tǒng),該系統(tǒng)包括數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù);其特征在于,該系統(tǒng)進(jìn)一步包括靜態(tài)語(yǔ)句存儲(chǔ)模塊和存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊;其中,靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的靜態(tài)語(yǔ)句;存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括數(shù)據(jù)源定義存儲(chǔ)模塊和數(shù)據(jù)采集模塊;其中,所述數(shù)據(jù)源定義存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的數(shù)據(jù)源參數(shù);所述數(shù)據(jù)采集模塊用于讀取存儲(chǔ)的數(shù)據(jù)源參數(shù),向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送該數(shù)據(jù)源參數(shù)和接收自外部的用戶(hù)條件值;并向數(shù)據(jù)庫(kù)發(fā)送生成的存儲(chǔ)過(guò)程,以及輸出數(shù)據(jù)庫(kù)返回的報(bào)表數(shù)據(jù);所述存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于根據(jù)接收到的數(shù)據(jù)源參數(shù)讀取存儲(chǔ)的靜態(tài)語(yǔ)句,并基于該靜態(tài)語(yǔ)句、數(shù)據(jù)源參數(shù)和用戶(hù)條件值生成存儲(chǔ)過(guò)程。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)包括原始數(shù)據(jù)存儲(chǔ)模塊和存儲(chǔ)過(guò)程管理模塊;其中,所述原始數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)原始數(shù)據(jù);所述存儲(chǔ)過(guò)程管理模塊用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,執(zhí)行讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù)的操作。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,該系統(tǒng)進(jìn)一步包括數(shù)據(jù)源定義存儲(chǔ)模塊;其中,所述數(shù)據(jù)源定義存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的視圖部分操作語(yǔ)句;所述存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述數(shù)據(jù)庫(kù)用于通過(guò)運(yùn)行生成的實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程對(duì)原始數(shù)據(jù)執(zhí)行數(shù)據(jù)部分操作,并通過(guò)運(yùn)行視圖部分操作語(yǔ)句對(duì)執(zhí)行上述數(shù)據(jù)部分操作得到的結(jié)果數(shù)據(jù)執(zhí)行視圖部分操作,生成報(bào)表數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述數(shù)據(jù)源定義存儲(chǔ)模塊進(jìn)一步用于存儲(chǔ)預(yù)定義的數(shù)據(jù)源參數(shù);且該系統(tǒng)進(jìn)一步包括數(shù)據(jù)采集模塊;其中,所述數(shù)據(jù)采集模塊用于從數(shù)據(jù)源定義存儲(chǔ)模塊讀取數(shù)據(jù)源參數(shù)和視圖部分操作語(yǔ)句,該視圖部分操作語(yǔ)句為臨時(shí)表查詢(xún)語(yǔ)句;以及向存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊發(fā)送數(shù)據(jù)源參數(shù)和接收自外部的用戶(hù)條件值;并向數(shù)據(jù)庫(kù)發(fā)送生成的存儲(chǔ)過(guò)程和所述臨時(shí)表查詢(xún)語(yǔ)句,輸出數(shù)據(jù)庫(kù)返回的報(bào)表數(shù)據(jù);所述存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取靜態(tài)語(yǔ)句存儲(chǔ)模塊中存儲(chǔ)的靜態(tài)語(yǔ)句,并基于接收到的數(shù)據(jù)源參數(shù)、用戶(hù)條件值生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述數(shù)據(jù)庫(kù)用于創(chuàng)建接收到的實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行創(chuàng)建的存儲(chǔ)過(guò)程實(shí)現(xiàn)創(chuàng)建空臨時(shí)表、讀取存儲(chǔ)的原始數(shù)據(jù),向創(chuàng)建的空臨時(shí)表中插入原始數(shù)據(jù)的操作;以及通過(guò)運(yùn)行接收到的臨時(shí)表查詢(xún)語(yǔ)句對(duì)該臨時(shí)表中的數(shù)據(jù)進(jìn)行操作,生成報(bào)表數(shù)據(jù),并返回生成的報(bào)表數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述數(shù)據(jù)庫(kù)包括原始數(shù)據(jù)存儲(chǔ)模塊、存儲(chǔ)過(guò)程管理模塊和臨時(shí)表管理模塊;其中,所述原始數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)原始數(shù)據(jù);所述存儲(chǔ)過(guò)程管理模塊用于創(chuàng)建接收到的存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行創(chuàng)建的存儲(chǔ)過(guò)程實(shí)現(xiàn)從原始數(shù)據(jù)存儲(chǔ)模塊中讀取原始數(shù)據(jù),并向臨時(shí)表管理模塊發(fā)送空臨時(shí)表創(chuàng)建指令、原始數(shù)據(jù)和原始數(shù)據(jù)插入指令;所述臨時(shí)表管理模塊用于創(chuàng)建空臨時(shí)表,并向該空臨時(shí)表中插入原始數(shù)據(jù);以及通過(guò)運(yùn)行臨時(shí)表查詢(xún)語(yǔ)句,對(duì)該臨時(shí)表中的數(shù)據(jù)進(jìn)行操作,生成報(bào)表數(shù)據(jù),并返回生成的報(bào)表數(shù)據(jù)。
7.一種報(bào)表數(shù)據(jù)采集方法,其特征在于,該方法包括步驟a、讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程;b、創(chuàng)建并運(yùn)行生成的存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟a之前進(jìn)一步包括a0、接收來(lái)自外部的用戶(hù)條件值,讀取預(yù)定義并存儲(chǔ)的數(shù)據(jù)源參數(shù);所述步驟a包括根據(jù)讀取的數(shù)據(jù)源參數(shù)讀取存儲(chǔ)的相應(yīng)靜態(tài)語(yǔ)句,并將數(shù)據(jù)源參數(shù)和用戶(hù)條件值通過(guò)參數(shù)接口傳入讀取的靜態(tài)語(yǔ)句中,然后將靜態(tài)語(yǔ)句拼裝成存儲(chǔ)過(guò)程。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,該方法進(jìn)一步包括預(yù)定義并存儲(chǔ)視圖部分操作語(yǔ)句;所述步驟a0進(jìn)一步包括讀取存儲(chǔ)的視圖部分操作語(yǔ)句;所述步驟a包括生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述步驟b包括創(chuàng)建生成的實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程,并通過(guò)運(yùn)行該存儲(chǔ)過(guò)程對(duì)原始數(shù)據(jù)執(zhí)行數(shù)據(jù)部分操作,以及通過(guò)運(yùn)行視圖部分操作語(yǔ)句對(duì)執(zhí)行上述數(shù)據(jù)部分操作得到的結(jié)果數(shù)據(jù)執(zhí)行視圖部分操作,生成報(bào)表數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述視圖部分操作語(yǔ)句為臨時(shí)表查詢(xún)語(yǔ)句;步驟a中,所述生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程的步驟包括基于接收到的數(shù)據(jù)源參數(shù)、用戶(hù)條件值生成實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程;所述步驟b包括b1、創(chuàng)建并運(yùn)行所述實(shí)現(xiàn)數(shù)據(jù)部分操作的存儲(chǔ)過(guò)程,實(shí)現(xiàn)創(chuàng)建空臨時(shí)表,讀取原始數(shù)據(jù),并向創(chuàng)建的空臨時(shí)表中插入原始數(shù)據(jù);b2、運(yùn)行所述臨時(shí)表查詢(xún)語(yǔ)句,對(duì)所述臨時(shí)表中的數(shù)據(jù)進(jìn)行操作,生成報(bào)表數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,步驟b2中所述的操作包括對(duì)臨時(shí)表中的原始數(shù)據(jù)進(jìn)行豎向整合、橫向整合以及字符串運(yùn)算。
12.根據(jù)權(quán)利要求7至11中任意一項(xiàng)所述的方法,其特征在于,所述步驟b之后進(jìn)一步包括刪除創(chuàng)建的存儲(chǔ)過(guò)程。
全文摘要
本發(fā)明公開(kāi)了一種報(bào)表數(shù)據(jù)采集系統(tǒng),包括數(shù)據(jù)庫(kù)、靜態(tài)語(yǔ)句存儲(chǔ)模塊和存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊;其中,數(shù)據(jù)庫(kù)用于創(chuàng)建并運(yùn)行存儲(chǔ)過(guò)程,讀取存儲(chǔ)的原始數(shù)據(jù),生成報(bào)表數(shù)據(jù);靜態(tài)語(yǔ)句存儲(chǔ)模塊用于存儲(chǔ)預(yù)定義的靜態(tài)語(yǔ)句;存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊用于讀取存儲(chǔ)的靜態(tài)語(yǔ)句,生成存儲(chǔ)過(guò)程。而且本發(fā)明還基于上述系統(tǒng)采取將數(shù)據(jù)部分操作和視圖部分操作分別由存儲(chǔ)過(guò)程動(dòng)態(tài)生成模塊和數(shù)據(jù)采集模塊進(jìn)行實(shí)現(xiàn),從而使最終報(bào)表用戶(hù)可以定制操作,并降低了開(kāi)發(fā)和維護(hù)的工作量。另外,本發(fā)明還公開(kāi)了相應(yīng)的報(bào)表數(shù)據(jù)采集方法。避免了現(xiàn)有技術(shù)采取預(yù)定義存儲(chǔ)過(guò)程的方式所導(dǎo)致的系統(tǒng)處理負(fù)擔(dān)重和冗余占用系統(tǒng)存儲(chǔ)空間的缺陷,優(yōu)化了報(bào)表數(shù)據(jù)采集過(guò)程。
文檔編號(hào)G06F17/30GK1869982SQ20051011567
公開(kāi)日2006年11月29日 申請(qǐng)日期2005年11月8日 優(yōu)先權(quán)日2005年11月8日
發(fā)明者阿努, 陳宇, 劉華慶, 周昕宇, 應(yīng)志毅 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
德格县| 马关县| 合江县| 北宁市| 桦川县| 宁波市| 涿州市| 丰顺县| 收藏| 文山县| 花垣县| 云霄县| 隆回县| 永顺县| 翼城县| 贵南县| 广汉市| 肥乡县| 安仁县| 大安市| 靖安县| 定日县| 酒泉市| 商丘市| 彭水| 桐城市| 达日县| 集贤县| 博乐市| 津南区| 长葛市| 若羌县| 博湖县| 屯留县| 八宿县| 东方市| 农安县| 蒲城县| 东丽区| 修水县| 佛冈县|