【问题标题】:How to Reverse SSRS Recursive Hierarchy Sorting from Parent-Child to Child-Parent如何逆向从父子到子父的 SSRS 递归层次排序
【发布时间】:2016-05-18 12:46:24
【问题描述】:

我试图在 SSRS 200R2 的报告中反转递归层次结构的排序。该报告基于包含所需层次结构的 SSAS 多维数据集构建。

我阅读了这个主题的答案: SSRS ignores sort in a recursive hierarchy 我明白我无法对级别之间的层次结构进行排序。但是,我想要做的是反转从父子到子父的排序,而不是级别之间的排序,我找不到这样做的方法。

这是我的意思的一个例子:

员工的递归层次结构和求和度量如下所示:

Employee | Measure
------------------
Peter    | 10
  Adam   | 3
  Zelda  | 7
James    | 20
  Becky  | 15
  Paul   | 5

我希望看到相同的信息,但我想让子项显示在组的顶部,父项显示在组的底部:

Employee | Measure
------------------
  Adam   | 3
  Zelda  | 7
Peter    | 10
  Becky  | 15
  Paul   | 5
James    | 20

我尝试添加一个新字段“employee_level”,它表示我用来创建报告的员工层次结构中员工的级别,但按“employee_level”对 tablix 进行排序没有任何效果。

这是我在 MDX 中用于获取上述输出的查询:

WITH  
SET Filter_Employee_Hierarchy AS 
FILTER ([Employees].[Emp_Id].ALLMEMBERS , [Measures].[Sum] > 0)

MEMBER Employee_Level AS
[Employees].[Emp_Id].CURRENTMEMBER.LEVEL.ORDINAL 

MEMBER Employee AS
[Employees].[Emp_Id].MEMBER_CAPTION

MEMBER Employee_Parent AS 
[Employees].[Emp_Id].PARENT.MEMBER_CAPTION

SELECT 
{ [Measures].[Sum], Employee_Level, Employee,Employee_Parent } ON COLUMNS, 
{ Filter_Employee_Hierarchy } ON ROWS 
FROM [Cube];

是否有可能实现上述反转?如果有,怎么做?

编辑: 我想要做的是在 SSRS 报告 中获得相反的顺序。将 ORDER 添加到 MDX 不会影响最终报告。

【问题讨论】:

    标签: reporting-services mdx ssrs-2008-r2


    【解决方案1】:

    您可以在SELECT 子句中使用ORDER 函数吗?

    WITH  
    SET [Filter_Employee_Hierarchy] AS 
      FILTER (
        [Employees].[Emp_Id].ALLMEMBERS 
      , [Measures].[Sum] > 0 
      )
    SET [Filter_Employee_Hierarchy_ORDERED] AS
     ORDER(
        HIERARCHIZE([Filter_Employee_Hierarchy])
       ,[Measures].[Employee_Level]
       ,BDESC  
      )
    MEMBER [Measures].[RNKforOrdering] AS
      RANK(
         [Employees].[Emp_Id].CURRENTMEMBER
        ,[Filter_Employee_Hierarchy_ORDERED]
      )
    MEMBER [Measures].[Employee_Level] AS
      [Employees].[Emp_Id].CURRENTMEMBER.LEVEL.ORDINAL 
    MEMBER [Measures].[Employee] AS
      [Employees].[Emp_Id].MEMBER_CAPTION
    MEMBER [Measures].[Employee_Parent] AS 
      [Employees].[Emp_Id].PARENT.MEMBER_CAPTION
    SELECT 
      { 
        [Measures].[Sum]
      , [Measures].[Employee_Level] 
      , [Measures].[Employee_Parent] 
      , [Measures].[RNKforOrdering]
      } ON 0, 
      [Filter_Employee_Hierarchy_ORDERED] ON 1
    FROM [Cube];
    

    【讨论】:

    • 感谢您的回答,但恐怕没有多大帮助。虽然它更改了 MDX 结果,但 SSRS 报告仍按该顺序显示父子节点。
    • 也许我们可以添加一个反映所需顺序的度量,然后使用它在 ssrs 内部进行排序?
    • @NicoleVardi 我在你的个人资料中看到了 OU 的提及 - 你在 OU 工作还是教书?我目前正在准备 TM354 考试 - 因此通过 Stackoverflow 有一些应得的拖延时间!
    • 我实际上是 OU 的学生,我自己未能通过科学学位 :) 重新衡量,当我添加了“employee_level”时,我尝试过。一旦我将分组定义为递归层次结构,SSRS 就会忽略我:(
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多