2013年10月7日 星期一

[SQL Server 2008R2][SSRS] 父子式階層報表

在多維度分析中,父子式維度是非常重要的維度結構之一。它可以用最精簡的資料結構來處理層數過多、層數不對稱以及層數不確定的階層結構。像是組織架構、會計科目或是製造業的物料表 ( BOM ) 都屬於父子式階層。

父子式階層一定需要符合以下原則。在資料表中,除了成員的鍵值之外,還要有另外一個欄位用來表示父層成員的鍵值。
EMPLOYEE_KEY:員工鍵值
MANAGER_KEY:上層主管的鍵值
EMPLOYEE_KEY:員工姓名
MANAGER_KEY 為 NULL 表示為最上層人員 ( 董事長或 CEO )





首先加入一個資料表物件,將報表資料版面資料集中的 EMPLOYEE_KEY 拖拉至資料列群組版面中詳細資料之上。

將員工名稱與銷售金額欄位加入此資料表。
將詳細資料刪除。



在資料列群組中點選 EMPLOYEE_KEY 群組,按滑鼠右鍵選取群組屬性,切換至「進階」頁籤,在「遞迴父系」下拉選單中選取 MANAGER_KEY 。



刪除資料表中的 EMPLOYEE_KEY 資料行,將表頭文字修改並排版一下。


為了呈現如樹狀規則結構,則必須透過縮排的方式來呈現。必須設定 Padding 屬性,點選 EMPLOYEE_NAME 儲存格後,在屬性視窗中的「Padding」展開後的「Left」選項內撰寫以下運算式。
= ( 2 + ( Level ( ) * 20 ) ) & " pt "
使用 Level ( ) 函數來讀取出條規則所在的層級位置,然後依據層級所在位置設定留白的大小,層一會產生 22pt 的留白,即可完成自動縮排的效果。



在此父子式維度上加入下鑽功能 ( Drill Down )。將 EMPLOYEE_KEY 群組的可見性切換為隱藏,並將切換顯示設定為 EMPLOYEE_NAME。




完成漂亮的父子式階層結構。

上層主管不用自己出去跑業務,下層員工才會有銷售業績數字,在管理上,高階主管要扛的銷售數字就是下面業務人員的數字總和,因此可以調整一下公式。

加總
= Sum ( Fields!SALES_AMT.Value , "EMPLOYEE_KEY" )

遞迴累加
= Sum (Fields!SALES_AMT.Value , "EMPLOYEE_KEY" , Recursive )

在銷售金額右側新增一個欄位為「遞迴累加金額」

運算式中輸入以下公式。

結果如下所示。

沒有留言: