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