SSAS最大日期在分组记录集中

时间:2014-10-24 15:13:07

标签: reporting-services ssas mdx

我有一个查询,我需要为记录提取最新的风险评估等级,但需要对查询中的所有记录执行此操作。我有MS SSRS Report Builder (V3)作为访问此数据的唯一方法,并且无权修改供应商提供的基础多维数据集。

我的基本MDX可以提取所需的数据如下:

SELECT 

NON EMPTY { 
[Measures].[No of Investigations] 
} ON COLUMNS, 

NON EMPTY { (
[Investigation Indicators and Text Fields].[Investigation Reference Number].[Investigation Reference Number].ALLMEMBERS * 
[Risk Assessment Rating].[Risk Rating].[Risk Rating].ALLMEMBERS * 
[Risk Assessment Completed Date].[Date].[Date].ALLMEMBERS * 
[Risk Assessment Completed Time].[Time HHMM].[Time HHMM].ALLMEMBERS 
) } ON ROWS 

FROM [Investigation]

让我的日期和时间需要连接。我已将其作为计算字段进行了实现,但我无法测试最大值,因为它在使用聚合函数时给出了错误。

是否有人能够通过MDX声明或随后向我提供有关如何执行此操作的任何想法。理想情况下,我希望能够以两种方式创建结果 - 一个包含所有记录,一个标记显示哪个是最新评估,另一个只通过MDX拉回子集。

2 个答案:

答案 0 :(得分:0)

(未经测试)有兴趣知道这是否有帮助?

WITH SET [X] AS
  TAIL(
    NONEMPTY(
      {[Risk Assessment Completed Date].[Date].[Date].ALLMEMBERS * 
       [Risk Assessment Completed Time].[Time HHMM].[Time HHMM].ALLMEMBERS}
     ,{([Measures].[No of Investigations])} 
    )
  )
SELECT 

NON EMPTY { 
[Measures].[No of Investigations] 
} ON COLUMNS, 

NON EMPTY { (
  [Investigation Indicators and Text Fields].[Investigation Reference Number].[Investigation     Reference Number].ALLMEMBERS * 
  [Risk Assessment Rating].[Risk Rating].[Risk Rating].ALLMEMBERS * 
  [X]
) } ON ROWS 

FROM [Investigation]

答案 1 :(得分:0)

我认为

SELECT 

NON EMPTY { 
[Measures].[No of Investigations] 
} ON COLUMNS, 

NON EMPTY
[Investigation Indicators and Text Fields].[Investigation Reference Number].[Investigation Reference Number].ALLMEMBERS
*
Tail(
     NonEmpty(
              [Risk Assessment Completed Date].[Date].[Date].MEMBERS
              *
              [Risk Assessment Completed Time].[Time HHMM].[Time HHMM].MEMBERS
              ,
              { [Investigation Indicators and Text Fields].[Investigation Reference Number].CurrentMember }
        )
    )
}
*  
[Risk Assessment Rating].[Risk Rating].[Risk Rating].ALLMEMBERS
ON ROWS 

FROM [Investigation]

应该提供你想要的东西。

NonEmpty(...)是包含当前调查参考编号数据的所有日期/时间组合的集合。通过使用Members代替AllMembers,我排除了计算的日期/时间成员,通常会在最后排序,假设您不需要。假设所有非计算日期和时间成员按时间顺序排序,我们只需要包含该集合的最后一个元组的集合,这是Tail所做的。

最后,我们使用与此参考编号,日期和时间一起出现的所有风险评级,希望只有一个。