一種報表自動更新的方法和裝置制造方法【專利摘要】本申請?zhí)峁┝艘环N報表自動更新的方法和裝置。所述方法包括:收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系;調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù),并依據(jù)所述依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢;若是,則觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表。利用本申請無需手動刷新就可以獲取最新的數(shù)據(jù),減輕服務(wù)器的負(fù)載?!緦@f明】一種報表自動更新的方法和裝置【
技術(shù)領(lǐng)域:
】[0001]本申請涉及數(shù)據(jù)庫【
技術(shù)領(lǐng)域:
】,特別是涉及一種報表自動更新的方法和裝置?!?br>背景技術(shù):
】[0002]數(shù)據(jù)倉庫是一個獨立的數(shù)據(jù)環(huán)境,通過抽取過程將數(shù)據(jù)從聯(lián)機(jī)事務(wù)處理環(huán)境、夕卜部數(shù)據(jù)源和脫機(jī)的數(shù)據(jù)存儲介質(zhì)(例如數(shù)據(jù)庫)導(dǎo)入到數(shù)據(jù)倉庫中,將不同數(shù)據(jù)源的數(shù)據(jù)分離出來,形成統(tǒng)一、有效的數(shù)據(jù)集,并最終加工、轉(zhuǎn)換為適合于各類報表(report)提取的數(shù)據(jù)表(table)。[0003]數(shù)據(jù)倉庫通過調(diào)度系統(tǒng)來管理數(shù)據(jù)倉庫的任務(wù)(task),如圖5給出的報表生成的示意圖。數(shù)據(jù)倉庫調(diào)度系統(tǒng)開始啟動任務(wù)之前都會生成當(dāng)天的調(diào)度任務(wù),用于管理多個task的執(zhí)行,每個task產(chǎn)出一個或多個table,每個task依賴于一個或者多個前置task,當(dāng)一個task的前置task完成后,調(diào)度下一個task運行起來,進(jìn)而生成最終的結(jié)果table。[0004]Report由報表工具(例如,SAP公司的報表工具SAPBusinessObjects)依據(jù)關(guān)聯(lián)的數(shù)據(jù)倉庫的多個table生成,可以向相關(guān)的業(yè)務(wù)部門提供了大量的信息以供分析參考和決策,例如,產(chǎn)品部門通過Report查看市場消費變動情況,運營部門通過report了解消費群體分布情況等。[0005]Table是由數(shù)據(jù)倉庫調(diào)度系統(tǒng)管理生成的,而import是由報表工具管理生成的,兩個系統(tǒng)相互獨立、互不相關(guān)。當(dāng)業(yè)務(wù)部門想要查看某個import的最新數(shù)據(jù)時,并不清楚report依賴的數(shù)據(jù)倉庫table是否完成,所以獲取數(shù)據(jù)時,必須手動去刷新報表,以獲得最近的數(shù)據(jù)。[0006]以上現(xiàn)有技術(shù)中存在的問題是,如果一個import使用到了多個大數(shù)據(jù)量的table做關(guān)聯(lián),那么刷新一次r印ort的時間會很長,同時消耗大量的計算資源;而且當(dāng)有多人同時查看一個或多個report時,打開每個report都需要重新刷新,大量的刷新會加重報表服務(wù)器的負(fù)載,使得其它報表的訪問變慢,甚至可能導(dǎo)致服務(wù)器資源不足,影響系統(tǒng)的正常運行。[0007]因此,目前需要本領(lǐng)域技術(shù)人員解決的一個技術(shù)問題就是,提供一種報表自動更新的機(jī)制,以實現(xiàn)無需手動刷新就可以獲取最新的數(shù)據(jù),減輕服務(wù)器的負(fù)載?!?br/>發(fā)明內(nèi)容】[0008]本申請所要解決的技術(shù)問題是提供一種報表自動更新的方法,以實現(xiàn)無需手動刷新就可以獲取最新的數(shù)據(jù),減輕服務(wù)器的負(fù)載。[0009]本申請還提供了一種報表自動更新的裝置,用以保證上述方法在實際中的應(yīng)用及實現(xiàn)。[0010]為了解決上述問題,本申請公開了一種報表自動更新的方法,包括:[0011]收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系;[0012]調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù),并依據(jù)所述依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢;[0013]若是,則觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表。[0014]優(yōu)選的,所述收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系的步驟包括:[0015]在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系;[0016]針對各報表,在數(shù)據(jù)倉庫中查找各數(shù)據(jù)表所依賴的數(shù)據(jù)表所對應(yīng)的任務(wù),得到各報表所依賴的任務(wù)。[0017]優(yōu)選的,所述在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系的步驟包括:[0018]調(diào)用報表應(yīng)用端的API接口,提取生成各報表的SQL語句;[0019]針對各報表,解析對應(yīng)的SQL語句得到相應(yīng)的數(shù)據(jù)表。[0020]優(yōu)選的,解析所述SQL語句還得到相應(yīng)的視圖,所述在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系的步驟還包括:[0021]遞歸查找所述視圖對應(yīng)的數(shù)據(jù)表。[0022]優(yōu)選的,所述調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù)的步驟包括:[0023]調(diào)度系統(tǒng)依據(jù)所述報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系,以及各個任務(wù)之間的依賴關(guān)系,建立調(diào)度計劃;[0024]按照所述調(diào)度計劃,執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù)。[0025]優(yōu)選的,所述依據(jù)依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢的步驟為:[0026]在接收到任務(wù)執(zhí)行后返回的完成信息時,針對該任務(wù)所對應(yīng)的報表,判斷所依賴的各個任務(wù)是否均執(zhí)行完畢。[0027]優(yōu)選的,所述觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表的步驟包括:[0028]向報表應(yīng)用端發(fā)送預(yù)設(shè)的執(zhí)行完畢標(biāo)識和相應(yīng)的報表的標(biāo)識信息。[0029]優(yōu)選的,所述觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表的步驟包括:[0030]將相應(yīng)的報表的標(biāo)識信息發(fā)送到報表應(yīng)用端,同時調(diào)用報表應(yīng)用端API接口。[0031]優(yōu)選的,所述觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表的步驟還包括:[0032]報表應(yīng)用端依據(jù)報表的標(biāo)識信息,確定對應(yīng)的生成該報表的SQL語句;[0033]在數(shù)據(jù)倉庫提取該報表所依賴的數(shù)據(jù)表,執(zhí)行所述SQL語句,生成并更新該報表。[0034]優(yōu)選的,更新后的報表保存在報表應(yīng)用端的緩存中。[0035]優(yōu)選的,所述方法還包括:[0036]將更新后的報表發(fā)送給預(yù)設(shè)對象。[0037]本申請還提供了一種報表自動更新的裝置,包括:[0038]依賴關(guān)系收集模塊,用于收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系;[0039]調(diào)度模塊,用于調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù);[0040]判斷模塊,用于依據(jù)所述依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢,若是,則執(zhí)行刷新觸發(fā)模塊;[0041]刷新觸發(fā)模塊,用于觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表。[0042]與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點:[0043]本申請通過收集報表和數(shù)據(jù)倉庫任務(wù)的依賴關(guān)系,針對各個報表,依據(jù)依賴關(guān)系判斷其對應(yīng)的一個或多個任務(wù)是否執(zhí)行完,若執(zhí)行完畢,說明該報表所依賴的數(shù)據(jù)表都已經(jīng)完成,可以觸發(fā)報表應(yīng)用端刷新報表,從而實現(xiàn)了報表應(yīng)用端的報表的自動更新,刷新后的報表緩存到報表系統(tǒng)中,用戶訪問報表時,無需手動刷新可以直接從緩存中讀取最新的數(shù)據(jù),提高了報表的查看速度。[0044]同時,由于實現(xiàn)了報表的自動刷新,從而避免了刷新影響其他報表的訪問和導(dǎo)致服務(wù)器資源不足的問題,相比于現(xiàn)有技術(shù),減輕了服務(wù)器的負(fù)載?!緦@綀D】【附圖說明】[0045]圖1是本申請的一種報表自動更新的方法實施例1的流程圖;[0046]圖2是本申請的一種報表自動更新的方法實施例2的流程圖;[0047]圖3是本申請的一種報表自動更新的裝置實施例1的結(jié)構(gòu)框圖;[0048]圖4是本申請的一種報表自動更新的裝置實施例2的結(jié)構(gòu)框圖;[0049]圖5是本申請中報表生成的示意圖?!揪唧w實施方式】[0050]為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和【具體實施方式】對本申請作進(jìn)一步詳細(xì)的說明。[0051]參考圖1,示出了本申請的一種報表自動更新的方法實施例1的流程圖,具體可以包括以下步驟:[0052]步驟101、收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系。[0053]在本申請的一種優(yōu)選實施例中,所述步驟101可以包括:[0054]子步驟S11、在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系;[0055]子步驟S12、針對各報表,在數(shù)據(jù)倉庫中查找各數(shù)據(jù)表所依賴的數(shù)據(jù)表所對應(yīng)的任務(wù),得到各報表所依賴的任務(wù)。[0056]數(shù)據(jù)倉庫通過調(diào)度系統(tǒng)調(diào)度執(zhí)行多個數(shù)據(jù)表任務(wù),任務(wù)執(zhí)行后生成對應(yīng)的數(shù)據(jù)表。報表應(yīng)用端獨立于數(shù)據(jù)倉庫,依據(jù)預(yù)設(shè)的數(shù)據(jù)表與報表的依賴關(guān)系,從數(shù)據(jù)倉庫獲取數(shù)據(jù)表,并依據(jù)數(shù)據(jù)表生成報表。因此,報表應(yīng)用端的報表與數(shù)據(jù)倉庫中任務(wù)的依賴關(guān)系,可以通過報表應(yīng)用端的報表與數(shù)據(jù)表的依賴關(guān)系,以及數(shù)據(jù)倉庫中數(shù)據(jù)表與任務(wù)的對應(yīng)關(guān)系獲取。[0057]優(yōu)選的,所述子步驟Sll可以包括:[0058]子步驟SI1-1、調(diào)用報表應(yīng)用端的API接口,提取生成各報表的SQL語句;[0059]子步驟S11-2、針對各報表,解析對應(yīng)的SQL語句得到相應(yīng)的數(shù)據(jù)表。[0060]SQL(StructuredQueryLanguage)即結(jié)構(gòu)化查詢語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng),報表應(yīng)用端通過對數(shù)據(jù)表執(zhí)行SQL語句來生成報表,因此,解析SQL語句可以獲取報表所依賴的數(shù)據(jù)表。具體的,報表應(yīng)用端提供了API接口,通過調(diào)用報表應(yīng)用端的API接口,提取生成各報表的SQL語句,解析SQL語句可以得到報表和數(shù)據(jù)表的依賴關(guān)系,然后從數(shù)據(jù)倉庫中獲取數(shù)據(jù)表和任務(wù)的對應(yīng)關(guān)系,便可以得到報表應(yīng)用端的報表和數(shù)據(jù)倉庫中任務(wù)的依賴關(guān)系。[0061]在具體的實現(xiàn)中,從SQL語句中解析得到的可能是報表和視圖(view)的依賴關(guān)系,因此,還需要遞歸查找視圖和數(shù)據(jù)表的依賴關(guān)系,所述子步驟Sll還可以包括:[0062]子步驟SI1-3、遞歸查找所述視圖對應(yīng)的數(shù)據(jù)表。[0063]在具體的實現(xiàn)中,視圖是依據(jù)數(shù)據(jù)表生成的,可以通過以下步驟查找視圖對應(yīng)的數(shù)據(jù)表:[0064]St印1、查找生成視圖的SQL語句;[0065]Step2、解析SQL語句,獲得視圖所依賴的數(shù)據(jù)表或其他視圖;[0066]Step3、若上個步驟中獲得的是數(shù)據(jù)表,則將該數(shù)據(jù)表作為報表依賴的數(shù)據(jù)表;若獲得的是另一個視圖,則返回Stepl,直至解析結(jié)果為數(shù)據(jù)表。[0067]以下為生成報表A的SQL語句:[0068]SELECTa.SNAPSH0T_DATE,[0069]a.CUST_ID,[0070]b.FULLNAME,[0071]a.SITE_MEM_ID,[0072]c.APPLY_CUST_DAY,[0073]d.REPAY_AMT_MONTH,[0074]e.FIRST_VISIT_DATE,[0075]c.M0DEL_AMT_DAY,[0076]f.LEVEL1_NAME,[0077]g.STAR_NAME[0078]FROMJRVDL.A_TB_DRAWNDN_CUST_SUMDVOa,[0079]JRODS.TBIDL_SELLER_BASIC_INFOb,[0080]JRVDL.A_TB_APPL_CUST_SUMDVOc,[0081]JRVDL.A_TB_REPAY_CUST_SUMDVOd,[0082]JRVDL.A_TB_VISIT_STAT_SUMDVIe,[0083]JRODS.TBPUB_CATEGORY_INDUSTRY_DIMf,[0084]JRPUB.C_PUB_STAR_DIM0g[0085]WHERE(a.SNAPSH0T_DATE(+)=c.SNAPSH0T_DATE)[0086]AND(a.SITE_MEM_ID(+)=c.SITE_MEM_ID)[0087]AND(a.SITE(+)=c.SITE)[0088]AND(a.PR0D_ID(+)=c.PR0D_ID)[0089]AND(b.NICK(+)=a.SITE_MEM_ID)[0090]AND(d.SNAPSH0T_DATE(+)=a.SNAPSH0T_DATE)[0091]AND(d.PR0D_ID(+)=a.PR0D_ID)[0092]AND(d.SITE_MEM_ID(+)=a.SITE_MEM_ID)[0093]AND(d.SITE(+)=a.SITE)[0094]AND(b.TRADE_MAIN_CAT_ID=f.LEVEL1_ID(+))[0095]AND(e.NICK(+)=a.SITE_MEM_ID)[0096]AND(e.SNAPSH0T_DATE(+)=a.SNAPSH0T_DATE)[0097]AND(b.SELLER_STAR_ID=g.STAR_ID)[0098]AND(a.SITE_MEM_IDIsNotNullANDa.SNAPSHOT_DATE=trunc(sysdate)-1AND[0099]10a.PR0D_IDIN('2002;))[0100]對該SQL語句進(jìn)行解析,可以得到報表A所依賴的對象包括:[0101]對象1、JRVDL.A_TB_DRAWNDN_CUST_SUMDVO[0102]對象2、JRODS.TBIDL_SELLER_BASIC_INFO[0103]對象3、JRVDL.A_TB_APPL_CUST_SUMDVO[0104]對象4、JRVDL.A_TB_REPAY_CUST_SUMDVO[0105]對象5、JRVDL.A_TB_VISIT_STAT_SUMDVI[0106]對象6、JRODS.TBPUB_CATEGORY_INDUSTRY_DIM[0107]對象7、JRPUB.C_PUB_STAR_DIM0[0108]其中,對象1-5均為視圖,對象6-7為數(shù)據(jù)表,因此,針對對象1-5,需要遞歸查找對應(yīng)的數(shù)據(jù)表,共得到該報表所依賴的7個數(shù)據(jù)表;然后,針對各數(shù)據(jù)表,在數(shù)據(jù)倉庫中查找對應(yīng)的任務(wù),例如,對象6所依賴的任務(wù)task_id為519421,對象7所依賴的任務(wù)task_id為519342。最后,建立報表和任務(wù)的依賴關(guān)系。[0109]如下面表格所不為報表234和報表256與任務(wù)的依賴關(guān)系,其中,report_id=234的報表,依賴于task_id為510023,510055,130133的任務(wù);i^port_id=256的報表,依賴于task_id為612278,130023,130078的任務(wù)。[0110]【權(quán)利要求】1.一種報表自動更新的方法,其特征在于,包括:收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系;調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù),并依據(jù)所述依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢;若是,則觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表。2.如權(quán)利要求1所述的方法,其特征在于,所述收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系的步驟包括:在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系;針對各報表,在數(shù)據(jù)倉庫中查找各數(shù)據(jù)表所依賴的數(shù)據(jù)表所對應(yīng)的任務(wù),得到各報表所依賴的任務(wù)。3.如權(quán)利要求2所述的方法,其特征在于,所述在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系的步驟包括:調(diào)用報表應(yīng)用端的API接口,提取生成各報表的SQL語句;針對各報表,解析對應(yīng)的SQL語句得到相應(yīng)的數(shù)據(jù)表。4.如權(quán)利要求3所述的方法,其特征在于,解析所述SQL語句還得到相應(yīng)的視圖,所述在報表應(yīng)用端提取報表與數(shù)據(jù)表的依賴關(guān)系的步驟還包括:遞歸查找所述視圖對應(yīng)的數(shù)據(jù)表。5.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù)的步驟包括:調(diào)度系統(tǒng)依據(jù)所述報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系,以及各個任務(wù)之間的依賴關(guān)系,建立調(diào)度計劃;按照所述調(diào)度計劃,執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù)。6.如權(quán)利要求1所述的方法,其特征在于,所述依據(jù)依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢的步驟為:在接收到任務(wù)執(zhí)行后返回的完成信息時,針對該任務(wù)所對應(yīng)的報表,判斷所依賴的各個任務(wù)是否均執(zhí)行完畢。7.如權(quán)利要求1所述的方法,其特征在于,所述觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表的步驟包括:向報表應(yīng)用端發(fā)送預(yù)設(shè)的執(zhí)行完畢標(biāo)識和相應(yīng)的報表的標(biāo)識信息。8.如權(quán)利要求1所述的方法,其特征在于,所述觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表的步驟包括:將相應(yīng)的報表的標(biāo)識信息發(fā)送到報表應(yīng)用端,同時調(diào)用報表應(yīng)用端API接口。9.如權(quán)利要求7或8所述的方法,其特征在于,所述觸發(fā)報表應(yīng)用端刷新相應(yīng)的報表的步驟還包括:報表應(yīng)用端依據(jù)報表的標(biāo)識信息,確定對應(yīng)的生成該報表的SQL語句;在數(shù)據(jù)倉庫提取該報表所依賴的數(shù)據(jù)表,執(zhí)行所述SQL語句,生成并更新該報表。10.如權(quán)利要求1所述的方法,其特征在于,更新后的報表保存在報表應(yīng)用端的緩存中。11.如權(quán)利要求1所述的方法,其特征在于,還包括:將更新后的報表發(fā)送給預(yù)設(shè)對象。12.—種報表自動更新的裝置,其特征在于,包括:依賴關(guān)系收集模塊,用于收集報表和數(shù)據(jù)倉庫中各個任務(wù)的依賴關(guān)系;調(diào)度模塊,用于調(diào)度執(zhí)行數(shù)據(jù)倉庫中的各個任務(wù);判斷模塊,用于依據(jù)所述依賴關(guān)系,判斷各報表所依賴的任務(wù)是否均執(zhí)行完畢,若是,則執(zhí)行刷新觸發(fā)模塊;刷新觸發(fā)模塊,用于觸發(fā)報表應(yīng)用`端刷新相應(yīng)的報表。【文檔編號】G06F17/30GK103729385SQ201210392895【公開日】2014年4月16日申請日期:2012年10月16日優(yōu)先權(quán)日:2012年10月16日【發(fā)明者】李小健申請人:阿里巴巴集團(tuán)控股有限公司