SSRS 使用(1)建立简单的Report
http://www.softnado.cn/DotNet/5.Html
作者: 來源: 日期:2009-10-27 16:17:51 人氣:154 標(biāo)簽:SSRS Report 報(bào)表 .net 導(dǎo)讀:通常情況下,SSRS用來建立基于關(guān)系型數(shù)據(jù)源的報(bào)表,各種技術(shù)書籍上也基本介紹到此為止。而針對(duì)基于SSAS數(shù)據(jù)源的報(bào)表,介紹的卻少之又少。由于項(xiàng)目的需要,接觸了這方面的內(nèi)容,這里就拋磚引玉,結(jié)合自己在項(xiàng)目中的一些體驗(yàn),介紹一下如何在reportingservices中建立基于SSAS的報(bào)表,以及如何使
| 通常情況下,SSRS用來建立基于關(guān)系型數(shù)據(jù)源的報(bào)表,各種技術(shù)書籍上也基本介紹到此為止。而針對(duì)基于SSAS數(shù)據(jù)源的報(bào)表,介紹的卻少之又少。由于項(xiàng)目的需要,接觸了這方面的內(nèi)容,這里就拋磚引玉,結(jié)合自己在項(xiàng)目中的一些體驗(yàn),介紹一下如何在reporting services中建立基于SSAS的報(bào)表,以及如何使用parameters。 1、建立數(shù)據(jù)源 首先我們建立一個(gè)新的SSRS項(xiàng)目,然后建立一個(gè)新的Shared Data Sources,在Type下拉框下選擇”Microsoft SQL Server Analysis Services”, 點(diǎn)擊”Edit…”按鈕,選擇Cube. ? 第一步完成,我們建立好了數(shù)據(jù)源的連接。下面,我們就要建立具體的報(bào)表。我們假設(shè)以下的案例,建立一個(gè)統(tǒng)計(jì)每個(gè)產(chǎn)品的銷售量的報(bào)表,以國家,區(qū)域/省份,城市為參數(shù)來加以過濾。 2、創(chuàng)建空白報(bào)表 在建立一個(gè)新的報(bào)表之后,我們可以看到如下的界面。一共分為三個(gè)標(biāo)簽,Data頁用來創(chuàng)建報(bào)表需要的數(shù)據(jù)集,Layout頁用來設(shè)計(jì)報(bào)表格式以及數(shù)據(jù)的具體展示,Preview頁即預(yù)覽報(bào)表。 由于我們選擇的數(shù)據(jù)源是Cube,所以在左邊我們可以看到所選的Cube以及它包括的度量以及維度的相關(guān)信息。 3、創(chuàng)建數(shù)據(jù)集 接下來,我們就開始創(chuàng)建報(bào)表所需的數(shù)據(jù)集。先在Dataset下拉框中選擇”New Dataset…”創(chuàng)建一個(gè)新的數(shù)據(jù)集。
由于Cube的復(fù)雜性,系統(tǒng)提供了方便的拖曳功能來實(shí)現(xiàn)數(shù)據(jù)集的選擇。我們通過對(duì)需求的分析,了解到需要產(chǎn)品維度中的產(chǎn)品名稱屬性以及度量值中的銷售額,以及地理信息維度中的國家,區(qū)域,城市屬性。對(duì)于前者,我們可以方便的從左邊的列表中選擇所需的屬性,并把他們拖入右邊的空白處。 我們報(bào)表需要的主體數(shù)據(jù)產(chǎn)品名稱以及銷售額已基本建立完成。我們點(diǎn)一下工具框中的”刷新”按鈕,可以看到在屏幕左邊的數(shù)據(jù)集中多出了兩個(gè)屬性:產(chǎn)品名稱和銷售額。 新增加的這兩項(xiàng),就是我們?cè)贚ayout頁中將用到的數(shù)據(jù)集成員。 4、設(shè)置參數(shù) 首先確定哪個(gè)維度下的哪個(gè)屬性為參數(shù),在本例中,我們有三個(gè)參數(shù),國家,省份,城市。我們需要把它們從左邊的維度列表中選中,并拖到右上方的過濾列表中。請(qǐng)注意,在拖的過程中,要嚴(yán)格按照順序依次拖入,并把最后Parameters列選中。
我們分別點(diǎn)擊這三個(gè)新生成的數(shù)據(jù)集,我們會(huì)發(fā)現(xiàn)以下的MDX語句: ResellerGeographyCountryRegion: ? ResellerGeographyStateProvince: ResellerGeographyStateProvince: ?
經(jīng)過上面的操作,三個(gè)帶有聯(lián)動(dòng)關(guān)系的參數(shù)就已經(jīng)實(shí)現(xiàn)了,接下來,我們就可以簡(jiǎn)單設(shè)計(jì)一下報(bào)表格式。 5、設(shè)計(jì)報(bào)表格式 切換到Layout頁面,拖入一個(gè)Table控件,然后從左邊的數(shù)據(jù)集列表中,把產(chǎn)品名以及銷售額拖入相應(yīng)的單元格內(nèi),再對(duì)表格的樣式稍加修飾,就大功告成了。 ? 6、預(yù)覽 最后切換到Preview頁面,我們就可以看到效果了。先從三個(gè)下拉框內(nèi)選擇參數(shù),然后點(diǎn)擊”View Report”,對(duì)應(yīng)的報(bào)表數(shù)據(jù)就展示出來了。 ? ? 上述簡(jiǎn)單介紹了一下如何利用SSRS建立基于SSAS的報(bào)表,以及報(bào)表參數(shù)的運(yùn)用。在實(shí)際的應(yīng)用的,還有以下問題需要注意: 1、參數(shù)拖入的時(shí)候要按照需求的順序拖入 2、拖入?yún)?shù)后只能通過切換Tab頁面來創(chuàng)建或更新數(shù)據(jù)集 3、參數(shù)一但更改,Layout頁中配置參數(shù)的”Multi Value”就會(huì)被選中,所以如果大家要增加或刪除參數(shù),一定記住去配置參數(shù)的界面中,把每個(gè)參數(shù)的多選項(xiàng)重新設(shè)置一下(當(dāng)然,如果你就需要多選,那就不用管它) 4、在BIDS中編輯報(bào)表,其實(shí)修改的是后臺(tái)的xml文件。但有的時(shí)候,前臺(tái)的展示與后臺(tái)xml的儲(chǔ)存會(huì)不同步,所以,如果遇到報(bào)表預(yù)覽出錯(cuò)的時(shí)候,先不要急著改,試試把報(bào)表文件關(guān)了再重新打開,這時(shí),很可能就是見證奇跡的時(shí)刻…… 轉(zhuǎn)自 -- http://www.cnblogs.com/PumpkinDatabase/archive/2009/09/29/1576151.html |
SSRS 使用(2)使用技巧
作者: 來源: 日期:2009-10-27 16:24:04 人氣:361 標(biāo)簽:SSRS Report .net 報(bào)表 實(shí)例 導(dǎo)讀:在SSRS設(shè)計(jì)報(bào)表的時(shí)候,很多朋友對(duì)報(bào)表的圖形色彩,過濾...束手無策,下面的一些事例收集或許對(duì)您有些幫助!數(shù)據(jù)準(zhǔn)備圖表提供了一種實(shí)現(xiàn)數(shù)據(jù)可視化的方法。與冗長(zhǎng)的數(shù)據(jù)列表相比,圖表可以更有效地傳遞信息。在創(chuàng)建圖表前花費(fèi)時(shí)間認(rèn)真地準(zhǔn)備和理解數(shù)據(jù),將有助于快速高效地設(shè)計(jì)圖表。ReportingServic| 在SSRS設(shè)計(jì)報(bào)表的時(shí)候, 很多朋友對(duì)報(bào)表的圖形色彩,過濾...束手無策, 下面的一些事例收集或許對(duì)您有些幫助! ? 數(shù)據(jù)準(zhǔn)備 圖表與矩陣非常相似:
準(zhǔn)備圖表的數(shù)據(jù)集查詢時(shí)請(qǐng)牢記以下幾點(diǎn):
返回頁首
類別組表達(dá)式的值確定 X 軸的各個(gè)類別。標(biāo)簽僅針對(duì)在數(shù)據(jù)中的實(shí)際類別顯示。在類別模式中,組內(nèi)的排序順序和顯式排序表達(dá)式很重要,因?yàn)閳D表控件將不再對(duì)類別重新排序。針對(duì) X 軸所定義的格式代碼僅在組表達(dá)式或組標(biāo)簽表達(dá)式(如果已顯示定義)計(jì)算結(jié)果為非字符串對(duì)象時(shí)才會(huì)應(yīng)用。 如果存在多級(jí)類別分組,則會(huì)顯示類別的分組跨度。 X 軸的值范圍由最小和最大類別組表達(dá)式的值決定。因此,為了可以比較和排序,組表達(dá)式的值必須為數(shù)值或 DateTime 值。數(shù)據(jù)中的間隙(例如,使用 DateTime 類別分組卻只有七月和九月的數(shù)據(jù))在 X 軸上顯示,類別則按比例繪制到數(shù)字或 DateTime 軸。在標(biāo)量模式中只允許一個(gè)類別分組。 圖 1A 和 2A 中的圖表顯示相同四周的訂單數(shù)據(jù)。
由于在底層數(shù)據(jù)集中沒有周末(周六和周日)的訂單數(shù)據(jù),因此在圖 1A 中未顯示該類別。示例使用兩種類別分組,如圖 1B 所示。內(nèi)部組表達(dá)式使用 =Day(Fields!OrderDate.Value) 來按天分組。外部組表達(dá)式使用 =Month(Fields!OrderDate.Value) 來按月分組。 注意 外部組標(biāo)簽表達(dá)式定義為 =MonthName(Month(Fields!OrderDate.Value)),該表達(dá)式使用月名作為分組跨度的標(biāo)簽。
圖2A中的標(biāo)量軸模式 標(biāo)量模式中的 X 軸顯示數(shù)值或 DateTime 值。X 軸涵蓋了最小值和最大值范圍之間的全部值。因此,圖 2A 包含周末對(duì)應(yīng)的間隙,因?yàn)樗鼈儧]有訂單數(shù)據(jù)。 在標(biāo)量模式下使用 X 軸時(shí)僅允許一個(gè)類別分組。類別分組的值必須計(jì)算得出數(shù)值或 DateTime 值。X 軸標(biāo)簽的格式由 X 軸上的格式字符串設(shè)置確定,本例中為 MMM dd。圖 2B 顯示了 X 軸屬性的設(shè)置。
有關(guān)數(shù)字和 DateTime 格式字符串的詳細(xì)信息,請(qǐng)參閱 Microsoft Developer Network (MSDN) 上 .NET Framework 開發(fā)人員指南中的以下頁面:
軸標(biāo)簽 Y 軸標(biāo)簽始終基于數(shù)值。如果未指定顯式軸設(shè)置,則 Y 軸使用自動(dòng)縮放模式,如下所述:
X 軸模式 如先前部分所述,X 軸有多種模式。根據(jù)不同的模式,會(huì)提供不同的格式選項(xiàng),軸設(shè)置(最小值、最大值、交點(diǎn)等等)也可能有不同的解釋。下面對(duì)不同的格式選項(xiàng)進(jìn)行說明:
采用這些設(shè)置,X 軸非常類似于 Y 軸。軸設(shè)置(如最小值、最大值、交點(diǎn)、主要間隔及次要間隔)被解釋為整數(shù)值或雙精度值。 由于 X 軸的值為數(shù)字,所以可以直接應(yīng)用數(shù)字格式字符串。
軸最小值:如果軸最小值設(shè)為常量(比如 2005)或具有整數(shù)結(jié)果的表達(dá)式(比如 =2005),則此值會(huì)被解釋為該年的第一天(如 2005 年 1 月 1 日)。 軸最大值:整數(shù)設(shè)置被解釋為該年的最后一天(如 2005 年 12 月 31 日)。 軸交點(diǎn):設(shè)置被解釋為年中。 主要間隔和次要間隔:間隔設(shè)置被解釋為天(相當(dāng)于 OADate 格式)。例如,5 表示 5 天的間隔,0.5 表示半天(12 小時(shí))的間隔。 對(duì)于標(biāo)簽格式設(shè)定,可以直接應(yīng)用標(biāo)準(zhǔn) DateTime 格式字符串。
圖表控件基于類別組表達(dá)式值,將類別在多個(gè)系列中匹配(例如,2006 系列中類別為一月的數(shù)據(jù)將與 2007 系列中類別為一月的數(shù)據(jù)處于同一集合。 只有類別組表達(dá)式(或如圖 4 中的標(biāo)簽表達(dá)式)的計(jì)算結(jié)果為數(shù)字或 DateTime 數(shù)據(jù)類型時(shí),X 軸選項(xiàng)卡上的格式字符串設(shè)置才有效。通常使用類別模式時(shí),類別組表達(dá)式的計(jì)算結(jié)果為字符串對(duì)象,因此隨后應(yīng)用的格式代碼無效??商砑踊蚋念悇e組標(biāo)簽表達(dá)式,或直接通過標(biāo)簽表達(dá)式應(yīng)用格式設(shè)置,如圖 4 所示。 注意 在類別模式中,最小值、最大值和間隔的語義均基于“類別索引”。例如,將 x 軸最小值設(shè)置為 2 意味著不會(huì)顯示第一個(gè)類別的數(shù)據(jù)。將主要間隔設(shè)置為 5 意味著在 x 軸上僅每隔 4 個(gè)類別顯示標(biāo)簽。這在 x 軸有很多類別(和標(biāo)簽)且類別的底層語義實(shí)際為數(shù)字時(shí)很有用。 注意 Reporting Services 2005 也允許在“X 軸”和“Y 軸”選項(xiàng)卡中顯示的所有輸入字段(“標(biāo)題”、“最小值”、“最大值”、“主要間隔”、“次要間隔”等)中使用表達(dá)式。 軸標(biāo)簽格式設(shè)置問答
答:如果未指定軸設(shè)置,則圖表控件將基于數(shù)據(jù)點(diǎn) y 值自動(dòng)確定這些值。如果數(shù)據(jù)點(diǎn)的最小值/最大值不是整數(shù),y 軸標(biāo)簽則可能使用雙精度值。 不過,如果至少有一個(gè)軸設(shè)置(如“最小值”或“交點(diǎn)”)被報(bào)表作者顯式指定為整數(shù)值,則圖表控件會(huì)將自動(dòng)檢測(cè)到的值圓整為最接近的整數(shù)值,然后顯示“準(zhǔn)確的”標(biāo)簽。例如,可動(dòng)態(tài)設(shè)置 y 軸的最小值,并如此進(jìn)行圓整:=Floor(Min(Fields!Freight.Value))。
答:很可能是因?yàn)轭悇e組表達(dá)式的計(jì)算結(jié)果為字符串而不是數(shù)值。相應(yīng)更改類別組表達(dá)式。如果不想更改獲取標(biāo)量數(shù)據(jù)值而不是字符串值的查詢,還可在報(bào)表中使用 Microsoft Visual Basic 函數(shù)(如 CInt()、CDbl() 或 CDate())執(zhí)行類型轉(zhuǎn)換。
答:圖表控件會(huì)嘗試自動(dòng)定位 x 軸標(biāo)簽以避免重疊標(biāo)簽文本。默認(rèn)情況下,每個(gè)類別在 x 軸上均具有一個(gè)標(biāo)簽??娠@式設(shè)置 x 軸主要間隔設(shè)置以覆蓋此默認(rèn)行為。例如,將主要間隔設(shè)置為 5 將僅每隔 4 個(gè)類別顯示標(biāo)簽。
答:當(dāng)前,內(nèi)置的 Reporting Services 圖表僅允許自動(dòng)定位以避免覆蓋 x 軸標(biāo)簽。軸標(biāo)簽的標(biāo)簽方向(水平/垂直)取決于標(biāo)簽字符串大小和可用空間。X 軸標(biāo)簽可以一行水平顯示、以能夠換行的多行水平顯示或垂直顯示。當(dāng)前并不支持以某一角度顯示 x 軸標(biāo)簽或?qū)蝹€(gè) x 軸標(biāo)簽位置顯式手動(dòng)控制。 數(shù)據(jù)點(diǎn)標(biāo)簽和圖例標(biāo)簽 數(shù)據(jù)點(diǎn)標(biāo)簽可專用于指出圖表中所有可見數(shù)據(jù)點(diǎn)中的某些值(如總體最小值或最大值)。 要啟用數(shù)據(jù)點(diǎn)標(biāo)簽,請(qǐng)?jiān)凇皥D表屬性”對(duì)話框中編輯圖表值。這將打開“編輯圖表值”對(duì)話框,其中含有“點(diǎn)標(biāo)簽”選項(xiàng)卡,該選項(xiàng)卡具有“顯示點(diǎn)標(biāo)簽”選項(xiàng)。 打開數(shù)據(jù)標(biāo)簽時(shí),默認(rèn)情況下,每個(gè)數(shù)據(jù)點(diǎn)將顯示一個(gè)標(biāo)簽。數(shù)據(jù)點(diǎn)標(biāo)簽將自動(dòng)定位以避免重疊標(biāo)簽。如果數(shù)據(jù)點(diǎn)標(biāo)簽重疊,圖表控件會(huì)將重疊標(biāo)簽移至圖表繪圖區(qū)的空閑空間中(并畫出輪廓以將數(shù)據(jù)點(diǎn)標(biāo)簽與數(shù)據(jù)點(diǎn)值相連)。如果太多標(biāo)簽重疊,圖表控件將刪除個(gè)別數(shù)據(jù)點(diǎn)標(biāo)簽,直至有足夠的空間可放下其余標(biāo)簽而不會(huì)重疊。 除了自動(dòng)定位外,還可使用顯式“手動(dòng)標(biāo)簽定位”(頂部、靠左、居中等)。不過,視數(shù)據(jù)值以及數(shù)據(jù)點(diǎn)標(biāo)簽的長(zhǎng)度和大小而定,這可能導(dǎo)致重疊標(biāo)簽。 默認(rèn)情況下,數(shù)據(jù)點(diǎn)標(biāo)簽將顯示數(shù)據(jù)點(diǎn)的 y 值。也可指定顯式數(shù)據(jù)點(diǎn)標(biāo)簽表達(dá)式和數(shù)字或 DateTime 格式字符串來自定義標(biāo)簽。通常,會(huì)使用類似于用于計(jì)算數(shù)據(jù)點(diǎn)值表達(dá)式中 y 值的表達(dá)式執(zhí)行數(shù)據(jù)點(diǎn)標(biāo)簽計(jì)算。例如,要在該部分所占的相對(duì)份額大于總量的 5% 時(shí)只顯式數(shù)據(jù)點(diǎn)標(biāo)簽,可使用類似以下步驟中代碼的數(shù)據(jù)點(diǎn)標(biāo)簽表達(dá)式。
代碼解釋 GetLabel() 函數(shù)有兩個(gè)參數(shù)。第一個(gè)參數(shù)提供該特定數(shù)據(jù)點(diǎn)的當(dāng)前值。第二個(gè)參數(shù)提供總量計(jì)算。此函數(shù)計(jì)算相對(duì)百分比。如果它小于 5% (0.05),將返回一個(gè)具有空格的字符串。 注意 返回一個(gè)空值或空字符串將顯示自動(dòng)生成的默認(rèn)標(biāo)簽。如果相對(duì)百分比至少為 5%,則將返回百分比格式字符串(格式字符串:P1)。 可在此白皮書隨附的 PiePercentage 示例報(bào)表中找到應(yīng)用此種格式的示例。 餅圖和圓環(huán)圖數(shù)據(jù)標(biāo)簽位置 對(duì)于餅圖和圓環(huán)圖,只有兩種數(shù)據(jù)點(diǎn)標(biāo)簽位置:內(nèi)部(將數(shù)據(jù)點(diǎn)標(biāo)簽位置設(shè)置為“自動(dòng)”或“居中”)和外部(任何其他標(biāo)簽位置)。圖 5(以及 PieSimplePercentage 示例報(bào)表)中顯示了外部標(biāo)簽示例。
圖 5。餅圖中圖表外的數(shù)據(jù)點(diǎn)標(biāo)簽 可如圖 6 所示指定餅部分標(biāo)簽的位置。 圖例標(biāo)簽 通常,基于動(dòng)態(tài)系列組值或標(biāo)簽(如在組上顯式指定)和(靜態(tài)系列)值的名稱確定圖例標(biāo)簽。因?yàn)閳D表實(shí)質(zhì)上是分組層次結(jié)構(gòu)的扁平化表示,所以圖例標(biāo)簽基于該層次結(jié)構(gòu)生成。 例如,如果圖表含有兩個(gè)系列分組(外部的定義為 OrderYear,內(nèi)部的定義為 OrderQuarter),且僅有一個(gè)圖表值(如 Actual),圖例標(biāo)簽將通過將組值和圖表值串聯(lián)生成,如表 1 所示。
空數(shù)據(jù)點(diǎn)和標(biāo)簽 以下情況您可能會(huì)覺得很熟悉。您構(gòu)建了一個(gè)具有一個(gè)數(shù)據(jù)系列的圖表,數(shù)據(jù)點(diǎn)標(biāo)簽已打開,此圖表看上去很好。您決定添加一個(gè)動(dòng)態(tài)系列組以便該圖表顯示多個(gè)數(shù)據(jù)系列。可此時(shí)該圖表卻具有額外標(biāo)簽(用于空數(shù)據(jù)點(diǎn))。 在底層數(shù)據(jù)集對(duì)每個(gè)系列/類別組合都不包含數(shù)據(jù)值時(shí),會(huì)出現(xiàn)空數(shù)據(jù)點(diǎn)。此圖表實(shí)質(zhì)上等同于一個(gè)具有空單元的(稀疏)矩陣。 可刪除空數(shù)據(jù)點(diǎn)的標(biāo)簽。使用此白皮書隨附的 EmptyDataPointLabels 示例報(bào)表中所示的方法(另請(qǐng)參閱圖 7),而不打開數(shù)據(jù)點(diǎn)標(biāo)簽和使用默認(rèn)標(biāo)簽。以下是執(zhí)行此操作的示例代碼。 1.使用 Count(…) 函數(shù)確定為此數(shù)據(jù)點(diǎn)聚合多少底層數(shù)據(jù)集行。如果計(jì)數(shù)為零,則這是個(gè)空數(shù)據(jù)點(diǎn)。通過實(shí)際的標(biāo)簽值將計(jì)算值傳入自定義代碼函數(shù):
2.打開“報(bào)表屬性”對(duì)話框,然后單擊“代碼”選項(xiàng)卡。在“自定義代碼”選項(xiàng)中添加以下 GetLabel(…) 自定義代碼函數(shù)。
數(shù)據(jù)點(diǎn)標(biāo)簽格式設(shè)置問答 問:在圖表充滿數(shù)據(jù)點(diǎn)和標(biāo)簽時(shí),靠近數(shù)據(jù)點(diǎn)標(biāo)簽的灰線(稱為輪廓)有何用途? 答:如果數(shù)據(jù)點(diǎn)標(biāo)簽位置設(shè)置為“自動(dòng)”,則圖表控件會(huì)將標(biāo)簽移至空閑空間區(qū)中以避免重疊數(shù)據(jù)點(diǎn)標(biāo)簽。這些輪廓將通過數(shù)據(jù)點(diǎn)位置連接數(shù)據(jù)點(diǎn)標(biāo)簽。 可使用手動(dòng)定位避免此情況。使用表達(dá)式,可通過提供具有空格 (=" ") 的字符串的計(jì)算結(jié)果動(dòng)態(tài)隱藏大部分?jǐn)?shù)據(jù)點(diǎn)標(biāo)簽。否則,將在打開數(shù)據(jù)點(diǎn)標(biāo)簽時(shí)顯示默認(rèn)標(biāo)簽。 答:可以,可對(duì)數(shù)據(jù)點(diǎn)標(biāo)簽使用內(nèi)置的 Dundas 關(guān)鍵字。不過,通常建議您不要同時(shí)將 RDL 表達(dá)式和 Dundas 關(guān)鍵字同時(shí)使用(RDL 表達(dá)式將首先被計(jì)算,Dundas 函數(shù)將由圖表控件隨后進(jìn)行解釋)。表 3 含有有用的 Dundas 關(guān)鍵字的列表。
在下載文件中,與此白皮書一起還包含了基于 SQL Server 2005 AdventureWorks 示例數(shù)據(jù)庫和 Northwind 示例數(shù)據(jù)庫的一些示例報(bào)表。 柱形圖和折線圖混合圖表 將一些數(shù)據(jù)系列顯示成柱形并將其他數(shù)據(jù)系列顯示為線條的圖表常用于說明總體趨勢(shì)、目標(biāo)值或用于深入分析圖表中的數(shù)據(jù)。本節(jié)介紹了關(guān)于如何在 Reporting Services 中設(shè)計(jì)這種圖表的通用信息。 創(chuàng)建柱形圖和折線圖混合圖表: 1.打開“圖表屬性”對(duì)話框。 圖 8. 在柱形圖中將數(shù)據(jù)系列繪制成折線
將常數(shù)或動(dòng)態(tài)目標(biāo)值添加到圖表: 1.設(shè)計(jì)圖表。 SalesCostTarget 示例報(bào)表(見圖 10)使用此方法在圖表中添加了一條簡(jiǎn)單的銷售目標(biāo)線。
注意 由于折線圖系列的線條是通過連接多個(gè)類別的數(shù)據(jù)點(diǎn)來繪制的,因此只有在類別分組至少有兩個(gè)在運(yùn)行時(shí)不同的組實(shí)例值時(shí)才能看到線條。 注意 如果圖表包含一個(gè)或更多的系列組,目標(biāo)數(shù)據(jù)值對(duì)于每個(gè)系列組實(shí)例都相同。如果每個(gè)組實(shí)例都具有特定的目標(biāo)值,這可能會(huì)很有用。 如果您只希望將一個(gè)全局目標(biāo)值用于所有系列,可以按以下方式動(dòng)態(tài)設(shè)置目標(biāo)數(shù)據(jù)值:
具體的表達(dá)式實(shí)例可能與以下代碼類似:
Pareto 圖表 Pareto 圖表概括并顯示了數(shù)據(jù)組之間差異的相對(duì)重要性。Pareto 圖表可將“致命的少數(shù)”和“有用的多數(shù)”區(qū)別開來。還可將 Pareto 圖表定義成柱形以降序排列的柱形圖,以識(shí)別最大的改進(jìn)機(jī)會(huì)。 盡管內(nèi)置的 Reporting Services 圖表目前并不直接支持 Pareto 圖表,但是您可以使用 Reporting Services 2005 功能并編寫一些代碼來創(chuàng)建 Pareto 圖表。本節(jié)深入解釋了此白皮書附帶的 ParetoChart 示例報(bào)表。 以下是 ParetoChart 示例報(bào)表的方案描述。 SQL Server 2005 AdventureWorks 數(shù)據(jù)庫包含關(guān)于銷售雇員的數(shù)據(jù)。我們對(duì)分析以下與我們的銷售雇員有關(guān)的信息特別感興趣:
這一點(diǎn)可通過增加對(duì)銷售數(shù)據(jù)值(圖 11 中的綠色圓柱)的鉆取操作來實(shí)現(xiàn),因?yàn)橥ㄟ^鉆取操作可詳細(xì)分析個(gè)別銷售人員的數(shù)據(jù)而完成趨勢(shì)分析。鉆取報(bào)表(MovingAverage 示例報(bào)表)將在下一節(jié)詳細(xì)說明。 構(gòu)建 Pareto 圖表報(bào)表 1.定義檢索必需銷售數(shù)據(jù)的查詢。 該查詢將根據(jù)獎(jiǎng)金值對(duì)每個(gè)銷售人員的數(shù)據(jù)進(jìn)行預(yù)排序。它不會(huì)檢索獨(dú)立的銷售訂單,因?yàn)榇藞?bào)表不需要它們。這樣也可使數(shù)據(jù)集盡可能小。 將柱形圖添加到報(bào)表中。若要分析每個(gè)銷售人員的數(shù)據(jù),需基于銷售人員添加一個(gè)類別組(分組依據(jù) =Fields!SalesPersonID.Value)。對(duì)于類別標(biāo)簽,顯示銷售人員的名和姓。這一點(diǎn)可通過將類別組標(biāo)簽表達(dá)式設(shè)為以下形式來實(shí)現(xiàn)。
3.準(zhǔn)備圖表以進(jìn)行 Pareto 計(jì)算。 我們將 RunningValue(…) 函數(shù)用于計(jì)算。 注意 僅在從 Reporting Services 2005 開始的圖表中才支持 RunningValue 函數(shù)。 與矩陣相似,RunningValue 函數(shù)需要圖表中明確的分組范圍,以確定運(yùn)行值是否應(yīng)跨越某個(gè)特定數(shù)據(jù)系列的所有類別運(yùn)行(實(shí)質(zhì)上是水平方向),或者是否應(yīng)跨越某個(gè)特定類別的所有數(shù)據(jù)系列運(yùn)行(比較少見)。 組表達(dá)式:1 標(biāo)簽表達(dá)式:=""(從生成的圖例標(biāo)簽中隱去系列標(biāo)簽) 結(jié)果將產(chǎn)生一個(gè)數(shù)據(jù)系列,同時(shí)提供一個(gè)明確的系列范圍名稱。 通過將相應(yīng)的數(shù)據(jù)集字段拖到圖表上,可將 Bonus 和 SalesYTD 的數(shù)據(jù)值添加到圖表中。 注意 本示例對(duì)獎(jiǎng)金和銷售值使用了 Sum() 聚合函數(shù)。 我們想將圖例放在圖表繪圖區(qū)的左上角。因此,我們希望縮放 y 軸,以便圖表中顯示的最大數(shù)據(jù)點(diǎn)值不超過 y 軸總高度的 75%。 我們通過將獎(jiǎng)金計(jì)算按 75% 的系數(shù)縮放實(shí)現(xiàn)此目標(biāo):
? 我們對(duì)銷售計(jì)算執(zhí)行相同的操作:
5.將 y 軸設(shè)置為百分?jǐn)?shù)軸。 在上一步中,我們將獎(jiǎng)金計(jì)算和銷售計(jì)算設(shè)置為百分比計(jì)算(相對(duì)最大值的數(shù)量)。 將 y 軸的格式字符串設(shè)為 P0 將應(yīng)用百分比格式(實(shí)際 y 軸將在 0.0 和 1.0 之間按比例劃分)。為獲得良好的間隔,我們將 y 軸的主要間隔設(shè)置為 0.2 以設(shè)置 20% 的間隔。 RunningValue() 函數(shù)在重置之前一直進(jìn)行累積計(jì)算。我們希望永不重置。由于我們起初沒有明確的系列組,因此我們?cè)诓襟E 3 添加了一個(gè)系列組。 Pareto 計(jì)算是指累加和除以總值。對(duì)于獎(jiǎng)金 Pareto 計(jì)算,我們使用以下表達(dá)式。
我們對(duì)銷售 Pareto 計(jì)算執(zhí)行相同的操作:
7.添加針對(duì)銷售數(shù)據(jù)值的鉆取操作。 要啟用對(duì) MovingAverage 示例報(bào)表中單個(gè)銷售人員的銷售數(shù)據(jù)進(jìn)行鉆取分析,我們需要添加針對(duì)銷售數(shù)據(jù)點(diǎn)的鉆取操作(見圖 12)。由于我們只對(duì)某一個(gè)特定的銷售人員感興趣,因此我們將 SalesPersonID 鉆取參數(shù)設(shè)為當(dāng)前類別組的值。在本例中為當(dāng)前銷售人員 ID:=Fields!SalesPersonID.Value。
8.通過添加格式、數(shù)據(jù)點(diǎn)標(biāo)簽和圖例完成圖表。 移動(dòng)平均計(jì)算 移動(dòng)平均是用于分析時(shí)間系列數(shù)據(jù)的一系列類似的統(tǒng)計(jì)技術(shù)之一??蓪?duì)任何時(shí)間系列計(jì)算移動(dòng)平均系列。 雖然內(nèi)置的 Reporting Services 圖表不直接支持移動(dòng)平均計(jì)算,但是您通??删帉懘a來執(zhí)行此類計(jì)算。本節(jié)深入講解了 MovingAverage 示例報(bào)表。 該示例報(bào)表與上一節(jié)有關(guān) Pareto 圖表中說明的方案有關(guān)。對(duì)于某個(gè)具體的銷售雇員,我們想分析其過去和現(xiàn)在的銷售業(yè)績(jī)以根據(jù)多年的數(shù)據(jù)分析歷史趨勢(shì)。移動(dòng)平均可用于消除短期波動(dòng),以此強(qiáng)調(diào)長(zhǎng)期走向或周期。 MovingAverage 示例說明了如何計(jì)算簡(jiǎn)單的移動(dòng)平均數(shù)(先前 n 個(gè)數(shù)據(jù)點(diǎn)的未加權(quán)平均數(shù))。在這個(gè)具體示例中,我們使用了先前三個(gè)月的銷售數(shù)據(jù)。請(qǐng)參見圖 13。
構(gòu)建報(bào)表
移動(dòng)平均的數(shù)據(jù)值計(jì)算將基于由 MovingQueue 自定義代碼函數(shù)返回的值使用 RunningValue 函數(shù)。MovingQueue 函數(shù)將為累計(jì)的 RunningValue 運(yùn)算計(jì)算調(diào)整值。通過使用以下代碼來實(shí)現(xiàn)這一點(diǎn)。
注意 要在一個(gè)圖表內(nèi)運(yùn)行多個(gè)移動(dòng)平均計(jì)算,必須確定在系列結(jié)尾重置隊(duì)列的方式,或使用多個(gè)隊(duì)列。例如,您可以使用隊(duì)列(這些隊(duì)列基于系列組值進(jìn)行索引,并作為附加參數(shù)傳遞給 MovingQueue 函數(shù))的散列表。 注意 一個(gè)圖表不能跨過多個(gè)頁面。因此,需將變量聲明為專用非共享變量。 自定義圖表調(diào)色板和圖例 圖表使用有 10 到 16 種不同色彩的預(yù)定義內(nèi)置調(diào)色板。從 Reporting Services 2000 Service Pack 1 (SP1) 開始,您就可以覆蓋默認(rèn)色彩。若要將色彩值指定為常量或基于表達(dá)式的值,請(qǐng)單擊外觀屬性上的“系列樣式”按鈕以獲取“編輯圖表值”對(duì)話框中的數(shù)據(jù)值。例如,您可以通過此操作來基于特定條件(如當(dāng)前系列中的最小值或最大值)突出顯示值。 注意 如果您不想定義一個(gè)完整的自定義調(diào)色板,您可以覆蓋單個(gè)數(shù)據(jù)點(diǎn)的色彩。請(qǐng)使用表達(dá)式返回一個(gè)具體色彩值(以便覆蓋)或返回“空值”,這樣可從底層內(nèi)置調(diào)色板拾取當(dāng)前色彩。 例如,您想以紅色突出顯示 y 值為負(fù)數(shù)的所有數(shù)據(jù)點(diǎn)值。對(duì)于所有其他數(shù)據(jù)點(diǎn),您希望使用默認(rèn)色彩顯示。為此,請(qǐng)選擇“編輯數(shù)據(jù)值”并單擊“外觀”選項(xiàng)卡。單擊“系列樣式”按鈕以打開“樣式屬性”對(duì)話框。單擊“填充”選項(xiàng)卡。在填充色彩樣式屬性中輸入以下表達(dá)式。
注意 如果您將填充色彩設(shè)置為一個(gè)常量值,此色彩會(huì)應(yīng)用于具體數(shù)據(jù)系列的所有數(shù)據(jù)點(diǎn)。 圖表圖例使用色彩字段將圖例項(xiàng)匹配到可見數(shù)據(jù)點(diǎn)。圖例只能對(duì)每個(gè)圖例項(xiàng)(數(shù)據(jù)系列)顯示一個(gè)色彩字段;因此,它顯示系列內(nèi)第一個(gè)數(shù)據(jù)點(diǎn)的色彩。在您使用表達(dá)式動(dòng)態(tài)確定系列內(nèi)單個(gè)數(shù)據(jù)點(diǎn)色彩時(shí)請(qǐng)牢記這一點(diǎn);即圖例項(xiàng)總是顯示第一個(gè)數(shù)據(jù)點(diǎn)的實(shí)際色彩。 雖然內(nèi)置于 Reporting Services 圖表中的圖例易于使用,但是缺乏靈活性。例如,圖例會(huì)占用圖表內(nèi)的空間。如果將圖例置于繪圖區(qū)外,在圖例有所增長(zhǎng)時(shí),圖表繪圖區(qū)的尺寸會(huì)相應(yīng)地縮小。 您可以通過使用圖表或矩陣生成您自己的自定義圖例來獲得更大的靈活性以更好地控制圖例。若要使圖表中的色彩與自定義圖例同步,最簡(jiǎn)單的方法是定義您自己的自定義圖表調(diào)色板。CustomColorPalette 示例報(bào)表實(shí)現(xiàn)了一個(gè)自定義調(diào)色板和一個(gè)自定義圖例。請(qǐng)參見圖 14。
創(chuàng)建自定義調(diào)色板 1.定義圖表系列組和類別組。 默認(rèn)情況下,每個(gè)圖表數(shù)據(jù)系列都分配有一種色彩。此色彩基于選中的圖表調(diào)色板。在本例中,我們要基于系列組實(shí)例值覆蓋這些色彩。 colorPalette 變量存儲(chǔ)自定義調(diào)色板的定義,該調(diào)色板有 15 種不同的色彩。count 變量跟蹤不同分組值的總數(shù),以便在超出自定義調(diào)色板中的不同色彩數(shù)時(shí)回繞。mapping 散列表跟蹤分組值和色彩之間的映射。這保證了同一數(shù)據(jù)系列中的所有數(shù)據(jù)點(diǎn)具有相同的色彩。隨后,該表用于同步自定義圖例色彩與圖表色彩。將以下代碼加入報(bào)表的自定義代碼窗口。
3.調(diào)用 GetColor() 函數(shù)將色彩分配給數(shù)據(jù)點(diǎn)。 從填充色彩樣式屬性調(diào)用 GetColor 函數(shù)。編輯數(shù)據(jù)值以打開“編輯圖表值”對(duì)話框并單擊“外觀”選項(xiàng)卡(圖 15)。單擊“系列樣式”按鈕并單擊“填充”選項(xiàng)卡。當(dāng)前系列組值將作為參數(shù)傳遞給 GetColor 函數(shù),將內(nèi)部組實(shí)例值映射到色彩值時(shí)需要此函數(shù)。 注意 如果存在多個(gè)圖表系列組,您可以連接系列組值以創(chuàng)建一個(gè)在 GetColor 函數(shù)中使用的唯一標(biāo)識(shí)符。以下代碼是一個(gè)示例。
4.添加圖表圖例。 您可以使用內(nèi)置的圖表圖例。或者,也可關(guān)閉內(nèi)置的圖表圖例并按照下一操作過程中的步驟創(chuàng)建您自己的、有一個(gè)表格或一個(gè)矩陣數(shù)據(jù)區(qū)的自定義圖表圖例。 創(chuàng)建自定義圖例
一般而言,如果圖表有 m 個(gè)系列分組和 n 個(gè)類別分組,則您需要為自定義圖例添加 m+n 個(gè)表格組。 對(duì)于各個(gè)表格組,請(qǐng)確定只顯示組頭(它將包含圖例說明)。另外,請(qǐng)刪除表詳細(xì)信息行,除非您要使用表詳細(xì)信息行來模擬圖表數(shù)據(jù)表。
為自定義圖例的色彩字段添加一個(gè)矩形。例如,您可能會(huì)將其添加到第一個(gè)表格列。如步驟 2 所示,您將在表格中只有組頭行。矩形將加到最內(nèi)部的組頭層級(jí)。 將矩形的 BackgroundColor 屬性設(shè)置為與用于圖表數(shù)據(jù)點(diǎn)的填充色彩的表達(dá)式等價(jià)的表達(dá)式。在最普通的情況下,該表達(dá)式會(huì)像以下代碼中一樣僅包含一個(gè)分組值。
對(duì)于圖例文本,可使用與類別及系列組/標(biāo)簽表達(dá)式中相同的表達(dá)式,或進(jìn)行實(shí)驗(yàn)直到獲得您所要的圖例說明文本。 餅圖和圓環(huán)圖 數(shù)據(jù)點(diǎn)標(biāo)簽和圖例標(biāo)簽部分說明了如何為餅圖扇面設(shè)置內(nèi)部和外部數(shù)據(jù)點(diǎn)標(biāo)簽。本節(jié)說明了餅圖和圓環(huán)圖的幾個(gè)附加屬性。 與其他圖表類型不同,餅圖或圓環(huán)圖只有一個(gè)“分組維度”(即,一個(gè)數(shù)據(jù)系列)。若要在餅圖和圓環(huán)圖中使用兩個(gè)維度,就需要將圖表相互堆疊。 注意 在發(fā)布報(bào)表期間,Reporting Services 自動(dòng)地將餅圖或圓環(huán)圖的系列組轉(zhuǎn)換成類別組以將數(shù)據(jù)顯示成一個(gè)數(shù)據(jù)系列。 餅圖常用于顯示數(shù)據(jù)點(diǎn)的相對(duì)百分?jǐn)?shù)。一般而言,百分比值(例如,可將其顯示成數(shù)據(jù)點(diǎn)標(biāo)簽)可通過用數(shù)據(jù)點(diǎn)值表達(dá)式除以整個(gè)圖表的總和來計(jì)算。以下代碼是一個(gè)相應(yīng)的示例。
如圖 16 所示,表達(dá)式被作為一個(gè)數(shù)據(jù)標(biāo)簽表達(dá)式添加。
默認(rèn)情況下,餅圖扇面使用了黑色邊框以增強(qiáng)其可見性。但是,如在下一節(jié)的圖 17 所示,您可以使用特定的數(shù)據(jù)點(diǎn)外觀設(shè)置覆蓋邊框。如果您希望邊框的色彩與餅圖扇面的色彩一致,您必須使用上一節(jié)所述的自定義調(diào)色板。使用自定義調(diào)色板,您可以通過調(diào)用基于類別分組值分配色彩的自定義代碼函數(shù)為數(shù)據(jù)點(diǎn)(餅圖扇面)設(shè)置與邊框相同的色彩。 添加圖表數(shù)據(jù)表 您可能希望將明細(xì)數(shù)據(jù)添加到圖表中。直接將數(shù)據(jù)添加到圖表可能會(huì)使圖表更難以理解。可代之以數(shù)據(jù)表形式添加相應(yīng)信息。 圖表是可用來形象化值的總體分布及識(shí)別關(guān)注區(qū)域(如,非常大及非常小的值)的一種非常有效的方法。讀者可能希望根據(jù)底層明細(xì)數(shù)據(jù)更詳盡地分析信息。 Reporting Services 提供以下三種方式在圖表數(shù)據(jù)點(diǎn)上添加互動(dòng)操作:
圖 17 顯示了包含在本白皮書中的 PiePercentage 示例報(bào)表的簡(jiǎn)化版本。 圖 17. 使用了自定義格式、自定義調(diào)色板及數(shù)據(jù)表格的餅圖 創(chuàng)建數(shù)據(jù)表格
圖 17 中的餅圖有兩個(gè)類別分組。外部分組以訂單年度為基礎(chǔ)。內(nèi)部分組以產(chǎn)品類別為基礎(chǔ)。定義自定義調(diào)色板,如在創(chuàng)建自定義調(diào)色板步驟中的步驟 2 所述。 由于存在兩個(gè)類別分組,我們使用以下表達(dá)式生成一個(gè)復(fù)合鍵,該鍵將被傳遞給 GetColor 函數(shù)。
如果我們對(duì)數(shù)據(jù)點(diǎn)填充色彩屬性和數(shù)據(jù)點(diǎn)邊框色彩屬性應(yīng)用相同的 GetColor 函數(shù)調(diào)用,餅圖扇面將不顯示默認(rèn)的黑色邊框。
要實(shí)現(xiàn)這一目的,請(qǐng)將以下函數(shù)添加到報(bào)表自定義代碼部分。重要的是為那些沒有標(biāo)簽的餅圖扇面返回空白標(biāo)簽字符串,否則圖表控件將為該扇面顯示默認(rèn)標(biāo)簽。(默認(rèn)標(biāo)簽是底層數(shù)據(jù)點(diǎn)值。)
數(shù)據(jù)點(diǎn)的標(biāo)簽表達(dá)式調(diào)用 GetLabel 函數(shù)以計(jì)算百分比值/標(biāo)簽。
為圖表創(chuàng)建數(shù)據(jù)表(矩陣)。 圖表僅按年度和產(chǎn)品類別顯示聚合的銷售數(shù)據(jù)。在數(shù)據(jù)矩陣中,我們希望以同樣的方式對(duì)數(shù)據(jù)進(jìn)行分組。 我們添加矩陣數(shù)據(jù)區(qū)域并將其綁定到與圖表相同的數(shù)據(jù)集。然后,我們將 OrderYear 和 ProdCat 字段作為行組添加到矩陣上,并在矩陣單元中聚合 Sales 值。若要添加小計(jì),可右鍵單擊矩陣中的組頭單元格并從上下文菜單中選擇“小計(jì)”。 注意 單擊矩陣標(biāo)題中的綠色小三角形,選擇“小計(jì)”屬性,在這里您可以為小計(jì)單元格明確設(shè)置樣式屬性。例如,您可以用不同的背景色彩顯示小計(jì)單元格以從視覺上與其他數(shù)據(jù)相區(qū)別。 底層數(shù)據(jù)集提供了比圖表中顯示粒度更為細(xì)的數(shù)據(jù)粒度。我們可基于子類別添加另一個(gè)(內(nèi)部)行組,以及添加季度和月份作為矩陣的列組來利用數(shù)據(jù)矩陣的優(yōu)勢(shì)。 要為特定組添加明細(xì)效果,請(qǐng)右鍵單擊組頭并編輯組屬性。在“組屬性”對(duì)話框的“可見性”選項(xiàng)卡上,選擇應(yīng)切換當(dāng)前組可見性的報(bào)表項(xiàng)名稱。通常在父組中選擇文本框的報(bào)表項(xiàng)名稱。如果不存在父組,可將文本框添加到矩陣角中,并將其用于在矩陣中關(guān)聯(lián)最外面的分組級(jí)別。 設(shè)置切換狀態(tài)的“初始可見性”選項(xiàng)也在組的“可見性”選項(xiàng)卡上進(jìn)行設(shè)置。將此選項(xiàng)設(shè)置為“可見”意味著初始狀態(tài)為展開,而設(shè)置為“隱藏”意味著初始狀態(tài)為折疊。 如果組的初始切換可見性狀態(tài)設(shè)置為“可見”,則切換該組的報(bào)表項(xiàng)上的切換圖像可能顯示一個(gè)加號(hào) (+)。相反,要顯示減號(hào) (-) 切換圖像,請(qǐng)右鍵單擊切換組的報(bào)表項(xiàng);這通常是父組頭中的文本框。在上下文菜單中選擇“屬性”。在“文本框?qū)傩浴睂?duì)話框中,選擇“可見性”選項(xiàng)卡并設(shè)置切換圖像的初始外觀。因?yàn)榻M切換可見性設(shè)置為“可見”,所以文本框的初始外觀應(yīng)設(shè)置為“展開 (-)”,如圖 18 所示。
添加書簽以連接圖表和數(shù)據(jù)矩陣(可選)。 啟用從圖表數(shù)據(jù)點(diǎn)到數(shù)據(jù)矩陣的書簽導(dǎo)航可分為兩步。第一步,在數(shù)據(jù)矩陣內(nèi)部定義書簽 ID。第二步,定義圖表數(shù)據(jù)點(diǎn)上書簽導(dǎo)航操作的跳轉(zhuǎn)。 要在數(shù)據(jù)矩陣中添加書簽,請(qǐng)右鍵單擊 order year 行組的組頭,并在上下文菜單中選擇“屬性”。在“文本框?qū)傩浴睂?duì)話框中,選擇“導(dǎo)航”選項(xiàng)卡,并使用生成字符串的表達(dá)式定義“書簽 ID”表達(dá)式:=CStr(Fields!OrderYear.Value)。這為我們提供書簽跳轉(zhuǎn)目標(biāo)。 打開“圖表屬性”對(duì)話框,編輯數(shù)據(jù)點(diǎn)屬性。在“操作”選項(xiàng)卡上,選擇“跳至?xí)灐?#xff0c;使用同樣用于書簽 ID 的表達(dá)式。 散點(diǎn)圖和氣泡圖與其他圖表類型不同,因?yàn)樗鼈兙哂忻鞔_的數(shù)據(jù)點(diǎn) x 值,而不是將類別分組值用作 x 值。因此,可對(duì)數(shù)據(jù)進(jìn)行分組(和聚合),將其分為不同的類別而不是顯示在 x 軸上的值。例如,若要在 x 軸上顯示各銷售人員去年的銷售量,如果兩個(gè)銷售人員擁有相同的 x 值,則不希望聚合 y 軸上的值。BubbleChart 示例報(bào)表(圖 19)具有基于銷售人員的類別分組,所以該報(bào)表聚合每個(gè)銷售人員的銷售數(shù)據(jù)。但在 x 軸上顯示的是去年的銷售值。 注意 了解數(shù)據(jù)點(diǎn)的 x 值屬性和基于系列組與類別組的圖表數(shù)據(jù)分組之間的區(qū)別非常重要。如果設(shè)計(jì)散點(diǎn)圖或氣泡圖,并且該圖在預(yù)覽中僅顯示一個(gè)數(shù)據(jù)點(diǎn),但是本應(yīng)該顯示很多不同的點(diǎn),則最有可能的解釋就是未定義任何的類別組或系列組。如果未對(duì)類別組和系列組進(jìn)行定義,則基礎(chǔ)數(shù)據(jù)集行聚合為具有特定 x 值和 y 值的一個(gè)數(shù)據(jù)點(diǎn)。在某些情況下,您可以定義與 x 值表達(dá)式相同的類別組或系列組表達(dá)式,但是在散點(diǎn)圖或氣泡圖中,您更想根據(jù)數(shù)據(jù)所表示的內(nèi)容添加類別或系列分組。如果圖表為每位銷售人員聚合銷售值,類別或系列分組應(yīng)以 BubbleChart 示例報(bào)表中顯示的銷售人員 ID 或姓名為依據(jù)。
StepFunctionChart 示例報(bào)表給出了散點(diǎn)圖的另一用途。散點(diǎn)折線圖基于測(cè)量 ID 使用類別分組。對(duì)于特定的幾天(顯示為 x 值),在數(shù)據(jù)集中存在多個(gè)測(cè)量值(沿 y 軸上顯示),從而導(dǎo)致豎直遞增。
表內(nèi)嵌圖 有時(shí),運(yùn)行時(shí)的數(shù)據(jù)量未知,并且希望動(dòng)態(tài)“增長(zhǎng)”圖表的大小。實(shí)現(xiàn)此目的一個(gè)方法是在另一個(gè)數(shù)據(jù)區(qū)域的組中嵌入一個(gè)圖表。例如,可以根據(jù)下列表達(dá)式,在列表數(shù)據(jù)區(qū)域使用詳細(xì)信息組:
這將每二十個(gè)詳細(xì)信息行分為一組。將圖表嵌入到該列表中可在運(yùn)行時(shí)每二十行創(chuàng)建一個(gè)圖表實(shí)例。 要?jiǎng)?chuàng)建數(shù)據(jù)的內(nèi)嵌條形圖可視化,可使用兩種不同的方法實(shí)現(xiàn):
若要基于內(nèi)嵌的圖像實(shí)現(xiàn)內(nèi)嵌可視化
在 TableInlineChart 示例報(bào)表中,表格列的寬度為 2 英寸。對(duì)于填充量計(jì)算,我們使用點(diǎn)測(cè)量單位,每英寸包括 72 個(gè)點(diǎn)。因此,假設(shè)將左填充量設(shè)置為 0 點(diǎn),則“右填充量”選項(xiàng)的范圍是在 144 點(diǎn)之內(nèi)。使用下列代碼設(shè)置填充量。
將圖像大小屬性設(shè)置為“合適”。 在前一步驟中定義的填充量決定可用于圖像伸展的空間的大小,從而生成條形圖可視化效果。 內(nèi)嵌圖像方法的一個(gè)缺點(diǎn)是如果在圖像中使用字體或細(xì)線,圖像可能會(huì)拉長(zhǎng)。使用圖表進(jìn)行內(nèi)嵌可視化(圖 23)可提供更多對(duì)可視化的控制,并通常能獲得更佳效果。
若要使用圖表進(jìn)行內(nèi)嵌可視化 1.添加表格以分組數(shù)據(jù)。 設(shè)計(jì)表格的分組結(jié)構(gòu)。請(qǐng)記住,只能將圖表置于表格表頭或表格表尾中或置于組頭或組尾中。 要將條形圖可視化的圖表繪圖區(qū)調(diào)整至最大尺寸,請(qǐng)應(yīng)用下列圖表屬性設(shè)置。 常規(guī)設(shè)置:設(shè)置為條形圖,關(guān)閉圖例。 數(shù)據(jù):將圖表與父表綁定到相同的數(shù)據(jù)集;基于要進(jìn)行可視化的值添加數(shù)據(jù)點(diǎn)值。 X 軸:關(guān)閉軸標(biāo)簽,關(guān)閉網(wǎng)格線,將刻度線設(shè)置為“無”。 Y 軸:關(guān)閉軸標(biāo)簽,將刻度線設(shè)置為“無”,將最大值設(shè)置為在包含表格或數(shù)據(jù)集范圍內(nèi)計(jì)算出的最大值。要實(shí)現(xiàn)正確的條形圖大小需要如此設(shè)置,否則每個(gè)圖表實(shí)例將基于特定組的數(shù)據(jù)值僅自動(dòng)縮放 y 軸。 嘗試調(diào)整圖表繪圖區(qū)樣式設(shè)置、y 軸的主要網(wǎng)格線、3D 效果或動(dòng)態(tài)顏色設(shè)置,以進(jìn)一步優(yōu)化內(nèi)嵌圖表可視化。 圖表可擴(kuò)展性和手動(dòng)創(chuàng)建圖表 本白皮書提供通過表達(dá)式和自定義代碼功能調(diào)整圖表設(shè)置和擴(kuò)展現(xiàn)有圖表功能方面的信息。除此之外,還有其他方法可將更多高級(jí)圖表功能集成到 Reporting Service 中:
若要集成由自定義程序集生成的圖像 1.設(shè)計(jì)和實(shí)現(xiàn)自定義程序集以生成圖像。 自定義程序集必須自行檢索數(shù)據(jù)、負(fù)責(zé)分組/排序數(shù)據(jù)以及生成圖表圖像。 注意 自定義程序集必須以 byte[] 形式返回圖像。不能以 System.Drawing.Image 形式返回圖像。通??墒褂门c下列代碼相似的代碼轉(zhuǎn)換 System.Drawing.Image 對(duì)象。
2.將圖像添加到報(bào)表中。 將圖像類型設(shè)置為“數(shù)據(jù)庫”。如果生成的圖像是 PNG 圖像格式的位圖,則將圖像的“mimetype”屬性設(shè)置為“image/png”。對(duì)于圖像值屬性,請(qǐng)使用與下列表達(dá)式類似的表達(dá)式。
3.在“報(bào)表設(shè)計(jì)器預(yù)覽”視圖中查看報(bào)表以確認(rèn)報(bào)表工作正常。 注意 在默認(rèn)配置中,自定義程序集在“報(bào)表設(shè)計(jì)器”預(yù)覽中以“FullTrust”運(yùn)行。因此,對(duì)于要求特定代碼訪問安全權(quán)限的操作(如文件輸入/輸出、數(shù)據(jù)提供訪問等等),在“FullTrust”下將自動(dòng)為它們授予這些權(quán)限。 確保報(bào)表服務(wù)器的安全策略配置在運(yùn)行時(shí)為自定義程序集授予足夠的權(quán)限,否則圖像生成將失敗。有關(guān)詳細(xì)信息,請(qǐng)參閱 SQL Server 2005 聯(lián)機(jī)叢書中的 Understanding Code Access Security in Reporting Services(英文)。 基于 CustomReportItem 的圖表與自定義程序集的比較 通過自定義程序集方法使用自定義報(bào)表項(xiàng)有多項(xiàng)益處。首先,可以構(gòu)建自己的、可直接集成到“報(bào)表設(shè)計(jì)器”的設(shè)計(jì)時(shí)支持組件。其次,在運(yùn)行時(shí),可利用 Reporting Services 處理引擎來檢索數(shù)據(jù)、應(yīng)用分組/排序和篩選器。CustomReportItem 運(yùn)行時(shí)控件訪問經(jīng)過處理的數(shù)據(jù),并根據(jù)交互圖像映射和關(guān)聯(lián)操作生成圖表圖像。 在構(gòu)建自己的 CustomReportItem 之前,請(qǐng)仔細(xì)學(xué)習(xí)、研究文檔和示例。下列站點(diǎn)提供更多相關(guān)信息:
|
?
?
==================
1:為什么需要基于服務(wù)器的報(bào)表?
基于服務(wù)器的報(bào)表功能為實(shí)現(xiàn)以下任務(wù)提供了方法:集中存儲(chǔ)和管理報(bào)表、設(shè)置策略和確保對(duì)報(bào)表及文件夾的安全訪問、控制處理和分發(fā)報(bào)表的方式,以及將在業(yè)務(wù)中使用報(bào)表的方式標(biāo)準(zhǔn)化。
Reporting Services 是可伸縮的。您可以在單個(gè)服務(wù)器、分布式服務(wù)器和 Web 場(chǎng)配置中安裝報(bào)表服務(wù)器。
2:將報(bào)表功能添加到應(yīng)用程序
您可以將Reporting Services 功能添加到新的或現(xiàn)有應(yīng)用程序中。許多應(yīng)用程序都包含預(yù)定義的報(bào)表,這些報(bào)表提供有關(guān)應(yīng)用程序操作的信息和分析。如果要生成帶有報(bào)表功能的應(yīng)用程序,可以在應(yīng)用程序中添加 Reporting Services。通過創(chuàng)建要包含的報(bào)表,然后將這些報(bào)表、報(bào)表服務(wù)器引擎和報(bào)表服務(wù)器數(shù)據(jù)庫與應(yīng)用程序一起打包,就可以將報(bào)表功能添加到現(xiàn)有應(yīng)用程序中。在運(yùn)行時(shí),當(dāng)用戶啟動(dòng)調(diào)用報(bào)表的操作時(shí),應(yīng)用程序代碼將調(diào)用報(bào)表服務(wù)器引擎,后者將在報(bào)表服務(wù)器數(shù)據(jù)庫中檢索報(bào)表定義并用最新數(shù)據(jù)處理報(bào)表。
3:報(bào)表制作
報(bào)表制作在客戶端上完成,而不是在報(bào)表服務(wù)器上。在報(bào)表的外觀滿足需要后,您可以將其發(fā)布到報(bào)表服務(wù)器上,在這里,報(bào)表將可以供常規(guī)使用。
4:報(bào)表管理
使用 Reporting Services 的主要優(yōu)點(diǎn)之一是可以從一個(gè)中央位置管理報(bào)表和相關(guān)項(xiàng)??梢怨芾淼捻?xiàng)包括報(bào)表、文件夾、數(shù)據(jù)源連接和資源。對(duì)于這些項(xiàng),您可以定義安全性、屬性;在某些情況下,還可以定義計(jì)劃操作。此外,可以創(chuàng)建共享計(jì)劃和共享數(shù)據(jù)源,用于通用目的。
5:報(bào)表的訪問和傳遞
在 Reporting Services 中,有兩種方法可用于訪問和傳遞報(bào)表:按需訪問(使用戶可以通過報(bào)表查看工具選擇所需要的報(bào)表)和推式訂閱(自動(dòng)生成報(bào)表并將其傳遞到目標(biāo)位置)。
要按需查看報(bào)表,用戶需要從報(bào)表服務(wù)器文件夾層次結(jié)構(gòu)中選擇報(bào)表。用戶可以使用報(bào)表管理器來瀏覽報(bào)表服務(wù)器文件夾,或搜索特定報(bào)表。
要自動(dòng)接收?qǐng)?bào)表,用戶需要訂閱某個(gè)特定報(bào)表或一組報(bào)表。當(dāng)報(bào)表運(yùn)行時(shí),用戶將收到報(bào)表可用的通知,或通過電子郵件收到報(bào)表的副本。報(bào)表服務(wù)器管理員可以生成數(shù)據(jù)驅(qū)動(dòng)訂閱,用于將報(bào)表推向一大組用戶。數(shù)據(jù)驅(qū)動(dòng)訂閱將在運(yùn)行時(shí)生成一個(gè)收件人列表。在數(shù)據(jù)驅(qū)動(dòng)訂閱中,傳遞設(shè)置是在觸發(fā)訂閱時(shí)從存儲(chǔ)的數(shù)據(jù)(如員工數(shù)據(jù)庫中的數(shù)據(jù))生成的。
Reporting Services 支持多種查看格式。在顯示報(bào)表后,用戶可以用其他格式重新顯示報(bào)表。
6:Reporting Services 組件概述
1)報(bào)表服務(wù)器
報(bào)表服務(wù)器是 Reporting Services 的主要組件。它是一項(xiàng) Web Service,提供了一系列編程接口,客戶端應(yīng)用程序可使用這些編程接口對(duì)該報(bào)表服務(wù)器進(jìn)行訪問。通過其子組件,報(bào)表服務(wù)器可以處理報(bào)表請(qǐng)求;檢索報(bào)表屬性、格式設(shè)置信息和數(shù)據(jù);將格式設(shè)置信息與數(shù)據(jù)進(jìn)行合并;以及呈現(xiàn)最終報(bào)表。
子組件包括:編程接口、報(bào)表處理器、數(shù)據(jù)處理擴(kuò)展插件、呈現(xiàn)擴(kuò)展插件、報(bào)表服務(wù)器數(shù)據(jù)庫、計(jì)劃和傳遞處理器、傳遞擴(kuò)展插件。
2)報(bào)表管理器
報(bào)表管理器是一個(gè)基于 Web 的報(bào)表訪問和管理工具,它包含在 Microsoft? SQL Server? Reporting Services 中。使用報(bào)表管理器可以執(zhí)行以下任務(wù):
·???????? 查看、搜索和訂閱報(bào)表
·???????? 創(chuàng)建和管理文件夾、鏈接報(bào)表、報(bào)表歷史、計(jì)劃、數(shù)據(jù)源連接以及訂閱
·???????? 設(shè)置屬性和報(bào)表參數(shù)
·???????? 管理角色定義和角色分配(這兩者控制著用戶對(duì)于報(bào)表和文件夾的訪問權(quán)限)
3)報(bào)表設(shè)計(jì)器
4)報(bào)表服務(wù)器命令行實(shí)用工具
?
總結(jié)
以上是生活随笔為你收集整理的SSRS 使用(1)建立简单的Report的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: J2EE与.NET技术架构的比较
- 下一篇: 实例学习SSIS(一)--制作一个简单的