SSRS 2012 交互式报表 -- 父子式报表
在多维度分析中,父子式维度是非常重要的维度结构之一。它可以用最精简的数据结构来处理层数过多、层数不对称以及层数不确定的结构。像是组织架构、会计科目或是制造业的物料表(BOM)都属于父子式层次。以下将示范如何利用SSRS设计父子式层次报表。
步骤1:
首先,父子式层次一定需要符合以下原则。在数据表中,除了成员的键值之外,还要有另外一个字段用来表示父层成员的键值。
步骤2:
首先,加入一个数据表,将员工名称与销售金额字段加入此数据表。
步骤3:
建立以“EMPLOYEE_KEY”为基础的组,然后把详细信息删除。
步骤4:
右击“EMPLOYEE_KEY”组,选择组属性,切换至“Advanced”标签页,在“Recursive parent”处下拉选择“MANAGER_KEY”。
步骤5:
此时,可以删除系统自动产生的“EMPLOYEE_KEY”数据行,以及将报表稍作排版。
步骤6:
如果希望视觉上能呈现出如树状规则结构,则必须通过缩排的方式来显示。所以,接下来需设置Padding的属性,在属性窗口中的“Padding”展开后的“Left”选项内撰写以下表达式。
=(2 + (Level()*20)) & “pt”
步骤7:
以上的表达式是使用Level()函数来读取出这条规则所在的层级位置,然后根据层级所在位置设置留白的大小,以此段语法为例,层级一的规则会产生22pt的留白,而层级二会产生42pt (2 + (2*20))的留白,依次类推,即可完成非常漂亮的自动缩排的效果。
步骤8:
接下来,依照之前介绍的原理,在此父子式维度上加入深化功能。也就是将可见性切换为隐藏,并将切换显示设置为“EMPLOYEE_NAME”。
步骤9:
此时即可达成如下图所示的漂亮的父子式层次结构。
步骤10:
不过,仔细一看有点怪怪的,怎么比较上层的员工都没有数字?那是因为比较上层的都是高级主管,高级主管都不会自己出去跑业务,而是下层的业务人员才会有销售业绩数字。但是在管理面上,高级主管要扛的销售数字就是下面业务人员的数字总和,因此我们的公式可以做以下调整:
加和
=Sum(Fields!SALES_AMT.Value,”EMPLOYEE_KEY”)
返回累加
=Sum(Fields!SALES_AMT.Value,”EMPLOYEE_KEY”,recursive)
步骤11:
如此以来,即可产生正常的父子式层次报表了。