MDX:多维数据集计算的动态命名集

时间:2014-11-04 17:00:12

标签: ssas mdx

我正在尝试创建一个动态命名集,可以使用日期维度对数据进行切片。我希望有几个命名集,如最后一天,过去7天,上个月,上个季度等等。对于"最后一天"命名集,我正在考虑做类似的事情。

StrToMember("[Date].[Calendar].[Day].&[" + DateAdd("d", -1,Tail( [Date].[Calendar].[Day], 1) + "]")

我希望DateAdd("d", -1, Tail( [Date].[Calendar].[Day], 1) + "]")返回member_value,以便我可以构建uniquename字符串以返回成员,是否可能?

我使用DateAdd的原因是,有时我的日期级别数据存在差距,因此使用previousmember有时会返回错误的数据。

Ps:我在最后一天的意思实际上并不等于函数Now()-1,它是多维数据集中可用的最后一天,这就是为什么我不能依靠服务器系统时间来实现这一点

1 个答案:

答案 0 :(得分:0)

希望能给你最后一天:

WITH 
MEMBER [Date].[Calendar].[LastDay] AS
 Tail([Date].[Calendar].[Day]).ITEM(0).ITEM(0)
SET [VariousDates] AS
 {[Date].[Calendar].[LastDay]}
SELECT
 [VariousDates] ON 0
FROM [MyCube]

然后,您可以在集[VariousDates]中创建更多成员:

WITH 
MEMBER [Date].[Calendar].[LastDay] AS
 Tail([Date].[Calendar].[Day]).ITEM(0).ITEM(0)
MEMBER [Date].[Calendar].[Last7Days] AS
 AGGREGATE(
    Tail(
      [Date].[Calendar].[Day]
      ,7
    )
  )
SET [VariousDates] AS
 { 
   [Date].[Calendar].[LastDay]
  ,[Date].[Calendar].[Last7Days]
  }
SELECT
 [VariousDates] ON 0
FROM [MyCube]

(以上未经测试但希望有所帮助)