專利名稱::一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于報表制作
技術(shù)領(lǐng)域:
,具體涉及一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法。
背景技術(shù):
:報表是單位和部門運(yùn)營管理指標(biāo)的階段性反映,是相關(guān)負(fù)責(zé)人監(jiān)控業(yè)務(wù)運(yùn)行狀況、進(jìn)行決策的重要依據(jù)。隨著信息系統(tǒng)的應(yīng)用,計算機(jī)自動計算和生成報表逐步取代了傳統(tǒng)的手工統(tǒng)計方式,極大的提高了工作效率,增加了準(zhǔn)確程度。在通常的管理信息系統(tǒng)中,用戶的業(yè)務(wù)數(shù)據(jù)是存儲在數(shù)據(jù)庫中的。數(shù)據(jù)庫結(jié)構(gòu)一般是按照關(guān)系數(shù)據(jù)庫理論設(shè)計的,需要滿足范式要求。范式是數(shù)據(jù)庫設(shè)計所需要滿足的規(guī)范,滿足這些規(guī)范的數(shù)據(jù)庫是簡潔的、結(jié)構(gòu)明晰的,同時,不會發(fā)生插入、刪除和更新操作異常。但另一方面,這樣規(guī)范化的數(shù)據(jù)庫結(jié)構(gòu)對業(yè)務(wù)人員往往又是難以理解的。在業(yè)務(wù)人員看來,業(yè)務(wù)數(shù)據(jù)是按照業(yè)務(wù)分類、業(yè)務(wù)邏輯組織的,用戶在制作報表時也是按照業(yè)務(wù)分類、業(yè)務(wù)邏輯設(shè)計報表的。業(yè)務(wù)分類是用戶在業(yè)務(wù)操作中應(yīng)用的分類方法,用以更好地管理業(yè)務(wù)數(shù)據(jù),業(yè)務(wù)邏輯是用戶進(jìn)行業(yè)務(wù)活動的流程、規(guī)則等等。因此,采用語義視圖(邏輯數(shù)據(jù)集)的方法來映射物理數(shù)據(jù)結(jié)構(gòu),通過語義層使業(yè)務(wù)人員可以采用自己熟悉的業(yè)務(wù)術(shù)語設(shè)計報表從而屏蔽專業(yè)的技術(shù)術(shù)語。傳統(tǒng)的報表生成方法是基于單數(shù)據(jù)源的,需要制作多數(shù)據(jù)集關(guān)聯(lián)報表時,只能先將多個數(shù)據(jù)集先通過計算轉(zhuǎn)換成單個邏輯數(shù)據(jù)集后再設(shè)計報表。對應(yīng)地,傳統(tǒng)報表生成方法的語義層解決方案也是如此,它將語義視圖之間的關(guān)聯(lián)關(guān)系建立在整個視圖上,當(dāng)需要設(shè)計多個視圖關(guān)聯(lián)的報表時,可利用已建立的關(guān)聯(lián)關(guān)系將多個視圖計算合成為一個邏輯視圖后再設(shè)計報表。中國發(fā)明專利申請(公開日2007年8月22日,公開號CN101021839A)公開了一種非線性報表生成方法,該方法打破了單數(shù)據(jù)源的限制,它以表格中單元格為核心,數(shù)據(jù)集作為提供數(shù)據(jù)來源的屬性存在,這樣可以直接支持多個關(guān)聯(lián)數(shù)據(jù)集的運(yùn)算,而無須事先轉(zhuǎn)換成單一的邏輯數(shù)據(jù)集。該方法主要包括以下步驟(1)確定報表運(yùn)算時需要用到的數(shù)據(jù)集;(2)在靜態(tài)報表中確定某些單元格為擴(kuò)展格,即主動擴(kuò)展復(fù)制的單元格,并設(shè)置其擴(kuò)展方向;(3)設(shè)置所有單元格的左主格和上主格,即該單元格在縱向和橫向擴(kuò)展時需要跟隨的擴(kuò)展格;(4)在各單元格內(nèi)填入運(yùn)算表達(dá)式;(5)對報表進(jìn)行擴(kuò)展和計算,即可得到生成后的實(shí)際報表。由于傳統(tǒng)語義層的數(shù)據(jù)關(guān)聯(lián)方案不是基于非線性報表生成方法設(shè)計的,雖然在非線性報表生成方法中仍可以使用,但卻仍只能是先將多個關(guān)聯(lián)視圖計算合成為一個邏輯視圖再作為多數(shù)據(jù)集之一使用,在使用非線性報表生成方法的設(shè)計過程中無法使用事先能夠定義好的關(guān)聯(lián)關(guān)系,不能充分發(fā)揮非線性報表生成方法的多數(shù)據(jù)源能力。
發(fā)明內(nèi)容針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,該方法重新設(shè)計了語義層中視圖關(guān)聯(lián)關(guān)系的建立機(jī)制,使得采用非線性報表生成方法時,可以在報表設(shè)計階段使用事先在語義層中定義過的視圖關(guān)聯(lián)關(guān)系。為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是,一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,包括以下步驟(1)確定生成報表時所需的與數(shù)據(jù)庫中的數(shù)據(jù)表對應(yīng)的語義視圖;(2)在語義視圖字段上建立與其它視圖的關(guān)聯(lián)關(guān)系;(3)確定報表模板中的擴(kuò)展格、擴(kuò)展方向以及所有單元格的左主格和上主格;(4)將語義視圖中的字段以擴(kuò)展方式加入主格,同時將該字段與其他語義視圖的關(guān)聯(lián)關(guān)系添加成該主格的附加數(shù)據(jù)集,然后在單元格中添加語義視圖的運(yùn)算表達(dá)式。(5)對報表模板進(jìn)行擴(kuò)展和計算,生成報表。進(jìn)一步,步驟(2)中的所述的關(guān)聯(lián)關(guān)系是建立在主視圖的字段和從視圖之間,包括過濾條件和應(yīng)用方法。所述的應(yīng)用方法包括單濾和全濾。進(jìn)一步,步驟(2)中建立在同一個主視圖不同字段上針對同一個從視圖的關(guān)聯(lián)關(guān)系不同。進(jìn)一步,步驟(4)中所述的附加數(shù)據(jù)集是指附加在主格上對語義視圖的過濾運(yùn)算。所述的過濾運(yùn)算根據(jù)關(guān)聯(lián)關(guān)系中過濾條件的應(yīng)用方法而定,即單濾情況下產(chǎn)生包括一對一或一對多過濾運(yùn)算,全濾情況下產(chǎn)生多對多的過濾運(yùn)算。本發(fā)明的效果在于使得非線性報表生成方法可以基于語義層在報表設(shè)計階段進(jìn)行多視圖關(guān)聯(lián)設(shè)計。因?yàn)樵谠O(shè)計報表時己將與視圖字段關(guān)聯(lián)的其它視圖的關(guān)聯(lián)條件作為附加數(shù)據(jù)集加入到單元格中,這樣在報表擴(kuò)展計算時,如果該擴(kuò)展格的子格中涉及到了與該字段關(guān)聯(lián)的數(shù)據(jù)集計算,則將被自動過濾。圖1為本發(fā)明所述的方法流程圖。具體實(shí)施方式下面結(jié)合實(shí)施例和附圖對本發(fā)明所述的方法作進(jìn)一步地描述。實(shí)施例1如圖1所示,一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,包括以下步驟(1)確定生成報表時所需的與數(shù)據(jù)庫中的數(shù)據(jù)表對應(yīng)的語義視圖;本實(shí)施例中用到的數(shù)據(jù)庫中的數(shù)據(jù)表結(jié)構(gòu)如下createtable〃AREA〃(〃CITY〃C薩(IO),"DISTRICT"CHAR(10)表區(qū)市區(qū)ABC1所在城區(qū)職員人數(shù)平均年齡2列表地區(qū)表.城區(qū)職員表.count()職員表.sum(年齡)/C2);假定DISTRICT是該表的唯一碼。createtable"EMPLOYEE"("ID"CHAR(10),"應(yīng)E〃C膽咖,"SEX〃C應(yīng)(l),〃AGE〃NUMBER(3,0),"DISTRICT"CHAR(10)為描述方便,設(shè)上述兩個數(shù)據(jù)表對應(yīng)的語義視圖及其字段的名稱分別是表名和字段名后面的說明詞。其中,地區(qū)表為主視圖,職員表為從視圖。最終生成以城區(qū)為單位的職員統(tǒng)計表,包括職員人數(shù)和平均年齡。(2)在語義層的視圖字段上建立與其它視圖的關(guān)聯(lián)關(guān)系,所述的關(guān)聯(lián)關(guān)系包括過濾條件和應(yīng)用方法,其中應(yīng)用方法包括單濾和全濾。本實(shí)施例中,關(guān)聯(lián)關(guān)系是建立在主視圖的字段和從視圖之間,即在主視圖"地區(qū)表"的"城區(qū)"字段上建立與從視圖"職員表"的關(guān)聯(lián)關(guān)系。過濾條件為"地區(qū)表.城區(qū)==職員表.所在城區(qū)",應(yīng)用方法為單濾。(3)確定報表模板中的擴(kuò)展格、擴(kuò)展方向以及所有單元格的左主格和上主格;(4)將語義視圖中的字段以擴(kuò)展方式加入主格,同時將該字段與其他語義視圖的關(guān)聯(lián)關(guān)系添加成該主格的附加數(shù)據(jù)集,然后在單元格中添加語義視圖的運(yùn)算表達(dá)式。所述的擴(kuò)展方式包括列表(一個個地列出來)和分組(把相同的歸并起來),所述的附加數(shù)據(jù)集是指附加在主格上對與其關(guān)聯(lián)的語義視圖的過濾運(yùn)算。所述的過濾運(yùn)算根據(jù)關(guān)聯(lián)關(guān)系中過濾條件的應(yīng)用方法而定,即單濾情況下產(chǎn)生包括一對一或一對多過濾運(yùn)算,全濾情況下產(chǎn)生多對多的過濾運(yùn)算。本實(shí)施例中,報表模板設(shè)計如下其中,A2為擴(kuò)展格,擴(kuò)展方向?yàn)榭v向。將"地區(qū)表"中"城區(qū)"字段以列表方式加入到主格A2中,同時自動將號名別齡區(qū)表編姓性年城員員員員員在職職職職職所6"城區(qū)"字段與"職員表"視圖的關(guān)聯(lián)關(guān)系添加成A2的附加數(shù)據(jù)集,即在A2的附加數(shù)據(jù)集加入"職員表.單濾(地區(qū)表.城區(qū)==職員表.所在城區(qū))"。然后在其它單元格中添加語義視圖的運(yùn)算表達(dá)式,如上表所示。由于A2是列表方式擴(kuò)展的主格,其每個擴(kuò)展出來的實(shí)例格只有一條"地區(qū)表"中記錄,單元格運(yùn)算將只針對該記錄去過濾"職員表",所以本實(shí)施中應(yīng)用方法選擇單濾方式。(5)對報表模板進(jìn)行擴(kuò)展和計算,生成最終報表。本實(shí)施例中,由于A2中有附加數(shù)據(jù)集信息,所以B2和C2中關(guān)于"職員表"的運(yùn)算將被限制在A2過濾過的記錄中,從而計算出正確的結(jié)果,得到最終報表,如下表所示。<table>tableseeoriginaldocumentpage7</column></row><table>實(shí)施例2本實(shí)施例中的語義視圖與實(shí)施例l相同,最終生成以省為單位的職員統(tǒng)計表。在主視圖"地區(qū)表"的"城市"字段上建立與從視圖"職員表"的關(guān)聯(lián)關(guān)系過濾條件為"地區(qū)表.城區(qū)==職員表.所在城區(qū)",應(yīng)用方法為全濾。報表模板設(shè)計如下<table>tableseeoriginaldocumentpage7</column></row><table>擴(kuò)展格為A2,擴(kuò)展方向?yàn)榭v向。將"地區(qū)表"中"城市"字段以分組方式加入到主格A2中,同時自動將"城市"字段與"職員表"視圖的關(guān)聯(lián)關(guān)系添加成A2的附加數(shù)據(jù)集,即在A2的附加數(shù)據(jù)集中加入"職員表.全濾(地區(qū)表.城區(qū)==職員表.所在城區(qū))"。然后在其它單元格中添加語義視圖的運(yùn)算表達(dá)式,如上表所示。由于A2是分組方式擴(kuò)展的主格,其每個擴(kuò)展出來的實(shí)例格將包含多條"地區(qū)表"中的記錄,單元格運(yùn)算將針對所有這些記錄去過濾"職員表",因此本實(shí)施例中應(yīng)用方法選擇全濾。最后,對報表模板進(jìn)行擴(kuò)展和計算,生成最終報表,如下表所示。所在城市職員人數(shù)平均年齡北京2029.5上海1226.7………上述兩個實(shí)施例中,同一主視圖"地區(qū)表"的不同字段"城市"和"城區(qū)"針對同一個從視圖"職員表"分別建立了單濾和全濾的不同應(yīng)用方法的關(guān)聯(lián)關(guān)系。如果從視圖"職員表"中也有"所在城市"字段,實(shí)施例2還可以將"城市"上的關(guān)聯(lián)關(guān)系建立成"地區(qū)表.城市==職員表.所在城市,單濾",最終得到與實(shí)施例2相同的報表。這進(jìn)一步說明同一主視圖上不同字段上建立的針對同一從視圖的關(guān)聯(lián)關(guān)系可以有較大區(qū)別,這與傳統(tǒng)語義層方案中僅在視圖之間建立關(guān)聯(lián)關(guān)系有根本不同。實(shí)際業(yè)務(wù)中上述兩種不同的設(shè)置方案都可能存在。一般情況下,為減少不一致的發(fā)生,數(shù)據(jù)庫設(shè)計時不會在"職員表"中設(shè)計冗余的"所在城市"字段(因"城區(qū)"字段已是唯一碼),此時需要采用實(shí)施例2所述的全濾方式。但有時為了査詢性能方面的考慮(全濾的計算量較大,性能會受到影響),也會增加冗余的"所在城區(qū)"字段,從而可以采用單濾方式以提高運(yùn)算效率。本發(fā)明所述的方法并不限于具體實(shí)施方式中所述的實(shí)施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出其他的實(shí)施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。權(quán)利要求1.一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,包括如下步驟(1)確定生成報表時所需的與數(shù)據(jù)庫中的數(shù)據(jù)表對應(yīng)的語義視圖;(2)在語義視圖字段上建立與其它視圖的關(guān)聯(lián)關(guān)系;(3)確定報表模板中的擴(kuò)展格、擴(kuò)展方向以及所有單元格的左主格和上主格;(4)將語義視圖中的字段以擴(kuò)展方式加入主格,同時將該字段與其他語義視圖的關(guān)聯(lián)關(guān)系添加成該主格的附加數(shù)據(jù)集,然后在單元格中添加語義視圖的運(yùn)算表達(dá)式;(5)對報表模板進(jìn)行擴(kuò)展和計算,生成最終報表。2.如權(quán)利要求1所述的一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,其特征在于步驟(2)中的所述的關(guān)聯(lián)關(guān)系是建立在主視圖的字段和從視圖之間。3.如權(quán)利要求1所述的一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,其特征在于步驟(2)中所述的關(guān)聯(lián)關(guān)系包括過濾條件和應(yīng)用方法。4.如權(quán)利要求3所述的一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,其特征在于所述的應(yīng)用方法包括單濾和全濾。5.如權(quán)利要求1至4之一所述的一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,其特征在于步驟(2)中建立在同一個主視圖不同字段上針對同一個從視圖的關(guān)聯(lián)關(guān)系不同。6.如權(quán)利要求1至4之一所述的一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,其特征在于步驟(4)中所述的附加數(shù)據(jù)集是指附加在主格上對與其關(guān)聯(lián)的語義視圖的過濾運(yùn)算。7.如權(quán)利要求6所述的一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,其特征在于所述的過濾運(yùn)算根據(jù)關(guān)聯(lián)關(guān)系中過濾條件的應(yīng)用方法而定,即單濾情況下產(chǎn)生包括一對一或一對多過濾運(yùn)算,全濾情況下產(chǎn)生多對多的過濾運(yùn)算。全文摘要本發(fā)明公開了一種基于非線性報表生成方法的語義視圖關(guān)聯(lián)方法,屬于報表制作
技術(shù)領(lǐng)域:
。傳統(tǒng)語義層的數(shù)據(jù)關(guān)聯(lián)方案不是基于非線性報表生成方法設(shè)計的,雖然在非線性報表生成方法中可以使用,但不能充分發(fā)揮非線性報表生成方法的多數(shù)據(jù)源能力。本發(fā)明所述的方法首先在語義視圖的字段上設(shè)置與其他視圖的關(guān)聯(lián)關(guān)系,然后將該字段與其他語義視圖的關(guān)聯(lián)關(guān)系添加成主格的附加數(shù)據(jù)集,最后擴(kuò)展計算得到最終的報表。采用本發(fā)明所述的方法能夠?qū)崿F(xiàn)在報表設(shè)計階段基于語義層進(jìn)行多視圖關(guān)聯(lián)設(shè)計。文檔編號G06F17/24GK101256554SQ20081008907公開日2008年9月3日申請日期2008年4月17日優(yōu)先權(quán)日2007年4月18日發(fā)明者蔣步星申請人:北京潤乾信息系統(tǒng)技術(shù)有限公司