


SQL Server 2008 R2 BI交互式排序解析
在BI系統(tǒng)中,報(bào)表的交互式排序往往是不可缺少的一項(xiàng)功能。如現(xiàn)在在系統(tǒng)中有一張用戶購(gòu)買力情況的報(bào)表。這張報(bào)表主要是根據(jù)過(guò)去五年的歷史記錄 分析出各個(gè)人群的購(gòu)買力。企業(yè)決策層可能希望在不重新生成報(bào)表的情況下,直接對(duì)報(bào)表的內(nèi)容進(jìn)行排序。如這種報(bào)表默認(rèn)情況是根據(jù)購(gòu)買力從高到低排序,而現(xiàn)在 用戶希望從低到高進(jìn)行排序。在這種情況下,就需要使用報(bào)表的交互式排序功能。在這篇文章中,筆者就給大家介紹一下這個(gè)交互式排序功能如何在BI中使用,以 及需要注意的事項(xiàng)與技巧等等。
一、交互式排序可以實(shí)現(xiàn)的功能。
交互式排序顧名思義,就是可以在報(bào)表的級(jí)別上,同用戶在排序內(nèi)容上進(jìn)行交互。簡(jiǎn)單的說(shuō),就是可以對(duì)已經(jīng)生成的報(bào)表直接根據(jù)特定的內(nèi)容進(jìn)行排序。而不需要更改默認(rèn)的排序規(guī)則或者重新生成報(bào)表。在BI系統(tǒng)中,這是一項(xiàng)必備的功能之一。
具體的來(lái)說(shuō),R2中的報(bào)表交互式排序功能可以實(shí)現(xiàn)如下兩個(gè)需求。
一是可以在列標(biāo)題中添加交互式排序按鈕。如上面這個(gè)案例,可以在購(gòu)買力這個(gè)標(biāo)題中加入一個(gè)按鈕。如果用戶有需要根據(jù)這個(gè)列來(lái)進(jìn)行重新排序,則只需要點(diǎn)擊 一下這個(gè)列標(biāo)題即可。如此用戶就可以在升序與降序之間進(jìn)行切換,選擇自己所需要的排序格式。如果在多個(gè)標(biāo)題中都添加這個(gè)按鈕,那么就可以根據(jù)用戶的需要, 選擇需要排序的列。
二是可以在文本框中添加按鈕來(lái)實(shí)現(xiàn)排列。這是交互式排序中比較高級(jí)的一項(xiàng)應(yīng)用。如數(shù)據(jù)庫(kù)管理員可以根據(jù)用戶的需要, 在行組外部的行中的文本框中添加排序按鈕。如此的話,就可以為父組行或者列、為子組行或者列或者為詳細(xì)信息行或者列來(lái)指定排序的規(guī)則。同時(shí)還可以將多個(gè)字 段組合成單個(gè)表達(dá)式,然后按多個(gè)字段來(lái)進(jìn)行排序。這就好像在數(shù)據(jù)庫(kù)中,直接在Order By語(yǔ)句后面掛上多個(gè)排序字段。在數(shù)據(jù)庫(kù)中,必須要有數(shù)據(jù)庫(kù)管理員來(lái)操作。如果用戶需要更改排序規(guī)則的話,數(shù)據(jù)庫(kù)管理員每次都要在數(shù)據(jù)庫(kù)中更改,顯然比較 麻煩。而在報(bào)表層面,則用戶可以根據(jù)自己的需要來(lái)設(shè)置。這就可以提高BI系統(tǒng)的界面的友好性與靈活性。在不改變SQL語(yǔ)句的情況下,方便用戶的操作。
二、交互式排序中的五要素分析。
那么該如何實(shí)現(xiàn)這個(gè)報(bào)表的交互式排序呢?筆者將其總結(jié)為五要素。只要能夠搞清楚這五個(gè)要素的含義以及他們之間的關(guān)系,那么交互式排序功能的實(shí)現(xiàn),就是水到渠成的事情。
第一個(gè)要素:排序?qū)ο蟆T谶@個(gè)要素中,主要確定兩個(gè)方面的內(nèi)容。一是確定需要堆行還是對(duì)列進(jìn)行排序,二是需要確定是對(duì)對(duì)個(gè)對(duì)象進(jìn)行排序還是對(duì)多個(gè)對(duì)象進(jìn) 行組合排序。一般來(lái)說(shuō),對(duì)列排序占了大多數(shù)情況。另外如果需要對(duì)多列進(jìn)行組合排序的時(shí)候,需要注意排序的效率問(wèn)題。如果報(bào)表中記錄比較多,則可能組合排序 的過(guò)程會(huì)比較耗時(shí)。不過(guò)在BI中,一般的報(bào)表都是總結(jié)性的內(nèi)容,所以記錄數(shù)量應(yīng)該不會(huì)太多。為此這個(gè)性能的問(wèn)題不需要太在意。管理員只需要知道有這么一回 事即可。
第二個(gè)要素:排序的依據(jù)。在數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,可以根據(jù)顯示的字段來(lái)排序,也可以根據(jù)未顯示的字段來(lái)排序。如果是視圖的話,只 要是基礎(chǔ)表中有這個(gè)字段即可,而不一定要在視圖中顯示出來(lái)。對(duì)于交互式排序來(lái)說(shuō),也有這方面的問(wèn)題。在這個(gè)要素中,管理員需要確定是根據(jù)列中顯示的字段進(jìn) 行排序,還是依據(jù)沒(méi)有顯示的字段進(jìn)行排序?因?yàn)椴煌男枨髮?duì)后續(xù)的操作要求有所不同。所以在這里要定義清楚。
第三個(gè)要素:排序上下文。 這是一個(gè)比較難以理解的。筆者在剛開始接觸到這個(gè)內(nèi)容的時(shí)候,想了好久也沒(méi)有弄明白這是什么意思。根據(jù)說(shuō)明自己操作了一遍,看了最終的效果才明白什么意 思。這大概就是只可意會(huì)、不可言傳的含義吧。在這里筆者只把其含義說(shuō)明一下,希望各位讀者自己去操作一遍,會(huì)有更加深刻的體會(huì)。管理員可以在與行組關(guān)聯(lián)的 行、與列組關(guān)聯(lián)的列、詳細(xì)信息行、父組內(nèi)的子組中進(jìn)行排序,或者同時(shí)在父組和子組中進(jìn)行排序。簡(jiǎn)單的說(shuō),這是一種比較高級(jí)的、在局部范圍之內(nèi)的排序。在 BI中,會(huì)經(jīng)常用到。所以這是必須要掌握的一個(gè)內(nèi)容。雖然比較難以用語(yǔ)言表達(dá),但是只要用戶多操作幾次,就可以掌握其中的訣竅。
第四個(gè)要素:按鈕的位置。在上面功能分析中,筆者已經(jīng)談到過(guò),可以將排序的按鈕添加到列標(biāo)題中,也可以將其添加到某個(gè)文本框中。在這一個(gè) 要素中,管理員就需要根據(jù)用戶的需求來(lái)確定,到底是將排序按鈕添加到哪個(gè)地方。在文本框上操作還是在列標(biāo)題上操作,對(duì)于排序來(lái)說(shuō),沒(méi)有實(shí)質(zhì)性的影響。主要 就是看用戶的操作習(xí)慣與需求而定。一般來(lái)說(shuō),不建議在同一張報(bào)表上同時(shí)在列標(biāo)題和文本框上添加排序按鈕。因?yàn)橐徊恍⌒模涂赡軙?huì)有相互沖突的事件產(chǎn)生。而 且在實(shí)際工作中,只需要一種就可以滿足用戶的需求。兩個(gè)都要,就有點(diǎn)畫蛇添足的感覺(jué)了。
第五個(gè)要素:排序是否會(huì)影響到多個(gè)區(qū)域。有時(shí)候 在一個(gè)報(bào)表中,可能會(huì)有多個(gè)數(shù)據(jù)區(qū)域。如在BI系統(tǒng)中,可以設(shè)計(jì)兩個(gè)相對(duì)獨(dú)立又有相互聯(lián)系的數(shù)據(jù)區(qū)域。這兩個(gè)數(shù)據(jù)區(qū)域中都有日期這個(gè)字段。現(xiàn)在的問(wèn)題是, 在報(bào)表中對(duì)其中一個(gè)區(qū)域的數(shù)據(jù)根據(jù)日期字段進(jìn)行了排序,那么另外一個(gè)數(shù)據(jù)區(qū)域是否自動(dòng)根據(jù)這個(gè)日期字段進(jìn)行排序呢?如果需要的話,那么就必須要要對(duì)這兩個(gè) 數(shù)據(jù)區(qū)域設(shè)置一定的關(guān)聯(lián),如父子關(guān)系等等。
三、在多個(gè)組中實(shí)現(xiàn)交互式排序。
在BI中,如果僅僅對(duì)單個(gè)組進(jìn)行交互式排序,可能還不能夠滿足用戶的全部需求。由于BI中,報(bào)表要呈現(xiàn)的內(nèi)容比較復(fù)雜,為此往往會(huì)在同一個(gè)報(bào)表中,設(shè)置多個(gè)組。此時(shí)如果用戶需要對(duì)多個(gè)組進(jìn)行交互式排序,可以實(shí)現(xiàn)嗎?
在R2中,為了滿足BI系統(tǒng)中的這個(gè)需求,特意設(shè)置了一個(gè)功能,可以實(shí)現(xiàn)對(duì)多個(gè)組進(jìn)行交互式排序。簡(jiǎn)單的說(shuō),如果一個(gè)報(bào)表中含有嵌套的行組、,而且每個(gè)行組都是基于單個(gè)數(shù)據(jù)集字段,則可以在這個(gè)報(bào)表中添加對(duì)父組值、子組值或者詳細(xì)信息行進(jìn)行排序的交互式排序按鈕。
如果用戶有這方面需求的話,數(shù)據(jù)庫(kù)管理員就需要重新設(shè)計(jì)這張報(bào)表。需要按組合了多個(gè)字段的表達(dá)式進(jìn)行分組。如還是以上面這個(gè)購(gòu)買力的報(bào)表為例。在數(shù)據(jù)庫(kù) 中設(shè)計(jì)的時(shí)候,是按照年齡層次、購(gòu)買力兩個(gè)字段(注意有先后順序)來(lái)排列的。而用戶提出來(lái),在使用報(bào)表的時(shí)候他們可能還希望根據(jù)性別與購(gòu)買能力兩個(gè)字段來(lái) 進(jìn)行排序。此時(shí)在這個(gè)對(duì)象設(shè)計(jì)的時(shí)候,需要將這兩個(gè)字段捆綁為一個(gè)組(利用組表達(dá)式來(lái)指定)。如此的話,在報(bào)表設(shè)計(jì)的時(shí)候,就可以讓用戶根據(jù)這個(gè)組(其實(shí) 是兩個(gè)字段)來(lái)進(jìn)行排序。不過(guò)需要注意的是,如果一個(gè)組中有多個(gè)字段,其排序的時(shí)候,字段的先后順序非常重要。這個(gè)跟OrderBy語(yǔ)句中的規(guī)則是一樣 的。
關(guān)鍵字:SQL Server、數(shù)據(jù)庫(kù)、報(bào)表
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解