第 3 課:加入矩陣、變數以及做為 KPI 的指標 (SSRS)
您在這一課會學習到將報表項目加入至 Employee_Sales_Summary_2008R2 報表,協助您回答下列 Adventure Works 銷售人員問題:
我是否達到整體銷售配額?
我在哪一個產品類別目錄中達到我的配額?
Employee_Sales_Summary_2008R2 是顯示銷售資料摘要的主要報表。您會在銷售訂單號碼上加入鑽研動作,讓使用者按一下就可以開啟顯示特定銷售訂單之所有詳細資料的個別報表。
學習內容
在本教學課程中,您將會執行下列工作:
加入矩陣,其中包含以產品類別目錄和銷售訂單號碼為基礎的資料列群組。
針對與子群組 (以銷售訂單號碼為基礎) 相關聯的資料列加入展開/摺疊切換。
加入布林值參數,讓使用者控制所有切換資料列要在報表第一次執行時顯示或隱藏。根據預設,您會將切換狀態設定為摺疊。
在銷售訂單號碼上加入鑽研動作。您將在之後的教學課程中建立目標報表。如需詳細資訊,請參閱<建立 Sales_Order_Detail_2008R2 報表>。
加入含有導出欄位的資料集,以便定義每個類別目錄的銷售配額數量,以及這個資料集所填入的多值參數。
將下列兩個指標加入至資料表,以便表示 KPI (關鍵效能指標):
**達到所有類別目錄的配額。**這個指標的範圍設定為矩陣層級,並且顯示所有類別目錄的銷售量是否超過該月的配額。
**達到每個個別類別目錄的配額。**這個指標的範圍設定為類別目錄群組層級,並且根據銷售量是否落在目標百分比範圍內顯示狀態。
您可以透過變更參數值,以互動方式變更類別目錄配額,以便查看每個指標的狀態如何變更。
定義報表和群組層級變數,以便協助撰寫複雜運算式。
在文字方塊中顯示多個計算結果,做為設計和偵錯協助機制。您可以根據參數設定文字方塊可見性,讓使用者控制是否要顯示這項選擇性資訊。
將包含多個報表項目的矩形加入至 Tablix 邊角資料格。
加入從案例文字到矩陣的書籤連結。
加入描述矩陣用途的說明文字。
完成這個教學課程的估計時間:30 分鐘。
需求
如需有關需求的詳細資訊,請參閱<AdventureWorks 2008R2 範例報表的必要條件>。
本課程假設您已經完成<建立報表伺服器專案及 AdventureWorks2008R2_Base 報表>來建立報表專案、共用資料來源和共用資料集,以及<第 2 課:加入折線圖和走勢圖>。
若要開啟專案和報表
在 Business Intelligence Development Studio 中,開啟您在上一課建立的報表伺服器專案 AdventureWorks 2008R2 範例報表。
開啟 Employee_Sales_Summary_2008R2 報表。
加入矩陣
若要設計相對複雜的矩陣,請直接在報表設計介面上使用矩陣來簡化選取和設定矩陣屬性的作業。在之後的步驟中,您會將矩陣加入至矩形容器。
若要加入矩陣來顯示銷售訂單
將 [矩陣] 加入至報表設計介面。
在矩陣中,執行下列動作:
將游標移到 [資料列] 資料格上方、按一下欄位標記、指向 [資料集]、指向 [EmployeeSalesDetail2008R2],然後按一下 Category。
在 [報表資料] 窗格中,展開 [資料集],然後展開 [EmployeeSalesDetail2008R2]。
在 [資料列群組] 窗格中,將 SalesOrderNumber 拖曳至 Category 下方。隨即建立子資料列群組。
在 [資料] 資料格中,按一下欄位標記,然後按一下 Sales。將這個資料格中的文字方塊格式化為貨幣。
以滑鼠右鍵按一下 Category 資料格、指向 [加入總計],然後按一下 [之後]。
視需要設定矩陣格式。
若要建立參數來控制展開/摺疊切換
在 [報表資料] 窗格中,加入名為 ExpandAllTableRows 的參數。
在 [報表參數] 屬性對話方塊中,進行下列動作:
將 [提示] 變更為展開所有資料表資料列?
在 [資料類型] 中,選取 [布林值]。
在 [預設值] 中,將此值設定為 false。
若要針對子資料列群組建立展開/摺疊切換
在 [群組] 窗格中,開啟 SalesOrderNumber 的 [群組屬性]。
在 [可見性] 頁面上,按一下 [依據運算式顯示或隱藏],然後輸入下列運算式:=NOT Parameters!ExpandAllTableRows.Value。
選取 [此報表項目可以切換顯示],然後從下拉式清單中選取擁有父群組:Category 之群組運算式的文字方塊名稱。
系統就會根據加入至文字方塊的第一個欄位自動命名文字方塊。
若要建立另一份報表的鑽研連結
在矩陣中,以滑鼠右鍵按一下 SalesOrderNumber,然後開啟 [文字方塊屬性]。
在 [動作] 頁面上,按一下 [移至報表]。
在 [指定報表] 中,輸入 Sales_Order_Detail_2008R2。
[!附註]
因為目標報表尚未存在,所以您必須手動輸入正確的報表名稱和參數名稱。如果目標報表存在專案中,您就可以從報表名稱和對應的報表參數下拉式清單中選擇。
按一下 [加入]。
在 [名稱] 中輸入 SalesOrderIDStart。
在 [值] 中輸入 [SalesOrderID]。
按一下 [加入]。
在 [名稱] 中,輸入 SalesOrderIDEnd。
在 [值] 中輸入 [SalesOrderID]。
在 [字型] 頁面上,將 [色彩] 設定為 [藍色],並將 [效果] 設定為 [底線]。
Sales_Order_Detail_2008R2 報表會顯示某個銷售訂單號碼範圍內每個銷售訂單的詳細資料。只要將目標報表參數設定為相同的銷售訂單號碼,此報表就會顯示單一銷售訂單的詳細資料。
加入資料集來提供初始配額和範圍
若要加入配額資料
在 [報表資料] 窗格中,加入名為 CategoryQuotas 的資料集。您可以使用現有的共用資料來源、指定內嵌資料集,並且使用下列查詢:
SELECT 1 as ID, 'Accessories' as Category, 1000 as Quota, 25 as PercentDeviation UNION SELECT 2 as ID, 'Bikes' as Category, 70000 as Quota, 5 as PercentDeviation UNION SELECT 3 as ID, 'Clothing' as Category, 2500 as Quota, 20 as PercentDeviation UNION SELECT 4 as ID, 'Components' as Category, 20000 as Quota, 10 as PercentDeviation
Quota 欄位代表貨幣。Quota 的值將會填入 @CategoryQuota 報表參數的初始值,您會在稍後的步驟中建立此參數。若要表示非整數的某個數字,報表參數必須是資料類型 Float。在下一個步驟中,您會根據 Float 類型的 Quota 建立導出欄位。
若要建立導出欄位
在 [報表資料] 窗格中,以滑鼠右鍵按一下名為 CategoryQuotas 的資料集,然後按一下 [加入導出欄位]。
按一下 [加入]。
在 [欄位名稱] 中,輸入 QuotaF。
在 [欄位來源] 中將值設定為下列運算式:
=CDbl(Fields!Quota.Value)
加入參數,讓使用者指定配額值
若要加入多值參數 @CategoryQuota
在 [報表資料] 窗格中,加入新的參數。
在 [一般] 頁面上,執行下列動作:
將 [名稱] 設定為 CategoryQuota。
將 [提示] 設定為類別目錄配額 (Accessories、Bikes、Clothing、Components):
將 [資料類型] 設定為 Float。
選取 [允許多個值]。
在 [預設值] 頁面上,執行下列動作:
選取 [從查詢取得值]。
針對 [資料集] 選取 [CategoryQuotas]。
針對 [值欄位] 選取 QuotaF。
執行報表來確認參數是否正確顯示以及每一個參數是否都有預設值。
若要讓使用者以互動方式變更類別目錄配額,請不要為資料集指定可用的值。可用的值會限制參數的選擇。
將複雜運算式定義為報表變數
變數會提供一個方式來定義複雜運算式一次,然後在其他運算式中加入它的參考。當處理報表時,就會評估報表變數一次。每一個群組執行個體會評估群組變數一次。
若要建立報表變數
若要建立報表變數,請開啟 [報表屬性]。
在 [變數] 頁面上,執行下列動作:
按一下 [加入]。
在 [名稱] 中,輸入 SumofAllParameterThresholds。
在 [值] 中,輸入 =CDbl(Parameters!CategoryQuota.Value(0)+Parameters!CategoryQuota.Value(1)+Parameters!CategoryQuota.Value(2)+Parameters!CategoryQuota.Value(3))。
這個運算式會將配額總計計算為類別目錄配額的總和。當您設定指標的範圍為矩陣時,將會使用這個變數。
將複雜運算式定義為群組變數
若要建立群組變數
選取矩陣會在 [群組] 窗格中顯示資料列群組。
以滑鼠右鍵按一下 Category 群組,然後開啟 [群組屬性]。
按一下 [變數],然後執行下列動作:
按一下 [加入]。
在 [名稱] 中,輸入 IndextoCategoryQuotas。
在 [值] 中,輸入 =Lookup(Fields!Category.Value,Fields!Category.Value,Fields!ID.Value,"CategoryQuotas")。
這樣會擷取群組值 Category 的識別碼,也就是 1、2、3 或 4。這些會對應到依照字母順序排列的類別目錄:Accessories、Bikes、Clothing、Components。
按一下 [加入]。
在 [名稱] 中,輸入 PercentDeviation。
在 [值] 中,輸入 =.01 * CDbl(Lookup(Fields!Category.Value,Fields!Category.Value,Fields!PercentDeviation.Value,"CategoryQuotas"))。
這樣會擷取群組值 Category 的百分比差欄位,也就是 25%、5%、20%、10%。如果是類似 Bikes 的類別目錄,配額的百分比差會比較小,因為銷售必須很大。如果是類似 Accessories 的類別目錄,銷售會比較少,所以配額的百分比差也會比較小。
當您設定指標的範圍為類別目錄群組時,將會使用此群組變數。
在下一個步驟中,您會加入條件式隱藏文字來顯示運算式的某些部分,此運算式會在每一個類別目錄配額的範圍中計算最高和最低的值。
加入群組標頭資料列並顯示計算結果
您可以計算並顯示運算式來協助了解執行階段的屬性值。請使用條件式可見性來隱藏這些不需要的值。
若要加入類別目錄的群組標頭資料列
以滑鼠右鍵按一下包含 SalesOrderNumber 的文字方塊、必要時按下 ESC 來選取文字方塊並結束編輯模式、指向 [插入資料列],然後按一下 [群組外 - 上方]。
在 [銷售] 資料行中,按一下您剛才加入之資料列中資料格的欄位標記,然後按一下 [銷售]。將文字方塊格式化成貨幣。
隨即加入與 Category 群組相關聯的標頭資料列。
若要將運算式的多個部分加入文字方塊
選取 SalesOrderNumber 上方的空白文字方塊 (位於您剛才加入的群組標頭資料列中)。此資料格中的資料範圍為類別目錄群組。
若要提供更多工作空間,請針對含有矩形的資料格擴展資料列高度和資料行寬度。
在文字方塊中,插入名為 rectCategoryQuotas 的 [矩形]。您可以使用矩形容器,將框線樣式和色彩設定為與矩陣中的資料格一致。
在矩形中,加入名為 tbCategoryQuotas 而且包含下列文字的文字方塊:
配額:
建立名為 Quota 而且包含下列值 (格式化為 [貨幣]) 的 [預留位置]:=CDbl(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))。
在下一行中,輸入減號 (-)、名為 PercentDeviation 的預留位置、冒號 (:),以及名為 MinimumThreshold 的預留位置。
將 PercentDeviation 的 [預留位置] 值變更為下列運算式:=FormatPercent(Variables!PercentDeviation.Value,0)
將 MinimumThreshold 的 [預留位置] 值變更為下列運算式:=(1.0-Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
在下一行中,輸入加號 (+)、名為 PercentDeviation 的預留位置、冒號 (:),以及名為 MaximumThreshold 的預留位置。
將 PercentDeviation 的 [預留位置] 值變更為下列運算式:=FormatPercent(Variables!PercentDeviation.Value,0)
將 MaximumThreshold 的 [預留位置] 值變更為下列運算式:=(1.0+Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
視需要設定文字格式。例如,讓所有文字靠右對齊。
在 [可見性] 頁面上,按一下 [依據運算式顯示或隱藏],然後輸入下列運算式:=NOT Parameters!ShowAll.Value。
在文字方塊中,讓文字靠右對齊。
執行報表。
如果是 Accessories,便會出現下列文字:
Quota: $1,000
-25%: $750
+25%: $1,250
請注意,矩形的框線樣式與矩形的其他部分不符。
若要指定巢狀矩形的框線屬性
按一下名為 tbCategoryQuotas 的文字方塊,然後按下 ESC 直到 rectCategoryQuotas 的 [矩形] 屬性出現在 [屬性] 窗格中為止。
在 [屬性] 窗格中執行下列動作:
將 [BorderColor] 變更為 [淺灰]。
將 [BorderStyle] 變更為 [實線]。
執行報表。
矩陣資料格框線現在會相符。
加入指標來代表所有類別目錄的銷售量
加入至矩陣邊角資料格的報表項目範圍會設定為矩陣中的資料。您可以在邊角中合併多個文字方塊、加入矩形容器,然後將多個報表項目加入至此容器。邊角資料格是顯示範圍設定為矩陣中資料之值的絕佳區域。您可以獨立控制矩形中每個項目的可見性。
如需詳細資訊,請參閱<了解 Tablix 資料區的區域 (報表產生器 3.0 和 SSRS)>。
若要加入範圍設定為矩陣資料的指標
邊角資料格是第一個資料列和第一個資料行中的資料格,其中包含文字:類別目錄。邊角資料格中項目的資料範圍是套用篩選之後矩陣中的所有資料。您會加入文字方塊、指標,以及具有條件式可見性的文字方塊,以便顯示針對類別目錄銷售量所計算的整體配額。
以滑鼠右鍵按一下文字方塊、指向 [插入],然後按一下 [矩形]。此矩形會取代文字方塊。
將矩形的名稱變更為 rectMatrixCorner。
針對邊角資料格擴展資料列高度和資料行寬度,以便提供更多工作空間。
在矩形中,加入文字方塊。輸入兩行下列文字:已達到配額?
在文字方塊旁,插入 [指標]。在 [方向性] 中,使用工具提示來按一下 [三上下三角形]。
讓指標的頂端與文字方塊頂端對齊。
開啟 [指標屬性]。
在 [值和狀態] 頁面上,執行下列動作:
在 [值] 中,選取 [Sum(Sales)]。
在 [狀態度量單位] 中,選取 [數值]。
在 [指標狀態] 中,刪除中間狀態。
在矩陣範圍中,將顯示限制為兩個狀態:已達到或是未達到配額。
在第一個狀態的 [開始] 中,輸入 0。
在 [結束] 中,輸入下列運算式:=Variables!SumParameterThresholds.Value
在第二個狀態的 [開始] 中,複製您在第一個狀態的 [結束] 中所使用的相同運算式。
在 [結束] 中,輸入下列運算式:=Max(Sum(Fields!Sales.Value))
在指標下方,加入名為 tbMatrixQuotas 而且包含下列文字的文字方塊:
配額:
建立名為 Quota 而且包含下列值 (格式化為 [貨幣]) 的 [預留位置]:=Variables!SumofAllParameterThresholds.Value。
總計:
建立名為 Total 而且包含下列值 (格式化為 [貨幣]) 的 [預留位置]:=Sum(Fields!Sales.Value)。
在 [可見性] 頁面上,按一下 [依據運算式顯示或隱藏],然後輸入下列運算式:=NOT Parameters!ShowAll.Value。
在文字方塊中,讓文字靠右對齊。
Quota:
將游標放在您剛才加入的文字旁邊、按一下滑鼠右鍵,然後按一下 [建立預留位置]。
在 [標籤] 中,輸入 MAX。
在 [值] 中,輸入 =Variables!SumParameterThresholds.Value。
在 [數字] 頁面的 [類別目錄] 中,按一下 [貨幣]。將 [小數位數] 設定為 0。
在矩形中,加入包含下列文字的文字方塊:Total:
將游標放在您剛才加入的文字旁邊、按一下滑鼠右鍵,然後按一下 [建立預留位置]。
在 [標籤] 中,輸入 Total。
在 [值] 中,輸入 Sum(Fields!Sales.Value)。
在 [數字] 頁面的 [類別目錄] 中,按一下 [貨幣]。將 [小數位數] 設定為 0。
開啟 [文字方塊屬性]。在 [可見性] 頁面上,執行下列動作:
按一下 [依據運算式顯示或隱藏]。
使用下列運算式:=NOT Parameters!ShowAll.Value
視需要將矩形以及它的內含報表項目格式化。例如,請執行下列作業:
將文字方塊和量測計面板的 [填滿] 色彩設定為符合資料列標頭的背景色彩。
將矩形的 [BorderColor] 和 [BorderStyle] 屬性設定為符合矩陣資料格。
將量測計面板的 [BorderStyle] 屬性設定為 [無]。
加入指標來代表每個類別目錄的銷售量
若要加入範圍為類別目錄資料列群組的指標
以滑鼠右鍵按一下矩陣中最後一個資料行標頭的控點,並指向 [插入資料行],然後按一下 [群組外 - 右方]。
針對新的資料行,在與 Category 相關聯的群組資料列中,插入名為 rectCategoryIndicator 的 [矩形]。
在矩形中,插入 [指標]。在 [符號] 中,使用工具提示來按一下 [三符號 (無框)]。
這個資料格的資料範圍設定為每個產品類別目錄的資料。
加入的指標就是量測計面板報表項目。視需要在量測計面板中調整量測計的寬度和高度。
開啟 [指標屬性] 到 [值和狀態] 頁面。
在 [值] 中,選取 [Sum(Sales)]。
在 [狀態度量單位] 中,選取 [數值]。
在第一個狀態中,執行下列動作:
在 [圖示] 中,確認顯示 X。
在 [色彩] 中,選取 [黃色]。
在 [開始] 中,輸入 0。
在 [結束] 中,輸入下列運算式:=(1.0-Variables!PercentDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!IndextoCategoryQuota.Value)-1))
在第二個狀態中,執行下列動作:
在 [圖示] 中,將符號變更為 √。
在 [色彩] 中,選取 [暗綠]。
在 [開始] 中,複製您在第一個狀態的 [結束] 中所使用的相同運算式。
在 [結束] 中,輸入下列運算式:=(1.0+Variables!PctDeviation.Value) * CDec(Parameters!CategoryQuota.Value((Variables!QuotaIndex.Value)-1))
在第三個狀態中,執行下列動作:
在 [圖示] 中,確認顯示 !。
在 [色彩] 中,選取 [深紫紅]。
在 [開始] 中,複製您在第二個狀態的 [結束] 中所使用的相同運算式。
在 [結束] 中,輸入下列運算式:=Max(Sum(Fields!Sales.Value))
將資料行標頭文字設定為已達到類別目錄配額?
加入矩陣的矩形容器
您可以加入矩陣的矩形容器以及說明矩陣用途的文字。
若要加入矩形容器
在報表的 [內容] 中,插入名為 rectMatrix 的 [矩形]。
在矩形中,加入包含下列文字的文字方塊:依類別目錄比較銷售與配額。
視需要設定格式。
選取矩陣。將矩陣的左上角拖曳到文字方塊下方的矩形中。此矩形會視需要擴充。
選取矩形。在 [屬性] 窗格中,將 [書籤] 設定為 QuotasRectangle。
使用 [配置] 工具列來對齊名為 rectCharts 和 rectMatrix 之矩形的頂端。
加入從案例文字到矩陣的連結
若要加入從文字到書籤的連結
在包含案例文字的文字方塊中選取文字。
使用滑鼠反白顯示矩陣一詞。
以滑鼠右鍵按一下並開啟 [文字屬性] 對話方塊。
在 [字型] 頁面上,將 [色彩] 設定為 [藍色],並將 [效果] 設定為 [底線]。
在 [動作] 頁面上,按一下 [移至書籤]。
在 [選取書籤] 中,輸入 QuotasRectangle。
變更 ReportMonth 的預設值
若要確認群組指標設定,請使用落在指標三個範圍內的資料。
若要設定 @ReportMonth 的預設值
在 [報表資料] 窗格中,開啟 @ReportMonth 的 [報表屬性]。
在 [預設值] 頁面的 [值] 中,輸入 11。
如此就會使用十一月的銷售量資料。
預覽報表
若要預覽及驗證報表
預覽報表。
驗證下列項目:
兩個主要矩形容器會並列顯示。
根據預設,銷售訂單的矩陣資料列會摺疊。
變更 @ExpandAllTableRows 的值,在報表執行時展開及摺疊矩陣內的所有資料列。
資料表角落中的指標為綠色。
類別目錄指標會顯示下列影像:
Accessories:黃色標記 (X)
Bikes:綠色核取記號 (√)
Clothing:黃色標記 (X)
Components:紫色驚嘆號 (!)
您可以根據 @ShowAll 參數值來顯示或隱藏計算資訊。
輸入不同的配額值,並驗證指標會顯示正確的狀態。
如果您打算將報表匯出成 .pdf 檔案或其他列印相容格式,請使用報表檢視器工具列的 [整頁模式] 按鈕來確認報表是否如預期方式轉譯。如果存在非預期的多個水平頁面,請移除空白並且視需要調整容器寬度。如需詳細資訊,請參閱<報表設計提示 (報表產生器 3.0 和 SSRS)>。