按参考日期列过滤措施

时间:2015-02-25 15:19:20

标签: ssas mdx

在我的日期维度中,我有一个名为CompareToDatekey的属性,它显示了应该用于比较度量随时间变化的日期。当我过滤特定主日期时,如何构建一个计算度量来给出比较日期的度量值?

我尝试做的是创建一个CompareTime维度,该维度通过主要时间维度具有引用关系 ([timeDim]。[CompareToDatekey] - > [TimeDim CompareDate]。[datekey]) 然后使用以下计算成员:

WITH MEMBER [Measures].[CompareAmount]
AS 
(
    Sum(EXISTING [TimeDim CompareDate].[datekey].children
    ,[Measures].[Net Amount])
)  

但结果是按主要日期过滤的度量而不是比较日期。

一些测试数据:

datekey | ComparedToDatekey

20150109 | 20141219

20150110 | 20141220

datekey | NetAmount

20141219 | 1716648.85

20150110 | 2266777.12

20141220 | 2378598.98

20150109 | 1588123.89

我想要一个计算成员,当我过滤20150109:20150110时,会给出20141219:20141220的净额总和

2 个答案:

答案 0 :(得分:2)

不幸的是,它不是链接维度的选项,因为过滤其中一个并不意味着过滤另一个维度。它们的连接仅用于映射,但不能用于切片切割。

我只看到无聊的StrToMember解决方案:

这是我的测试号码: CompareDate_1Initial

将属性添加到Date维度的最低级别: CompareDate_2Property

将此属性显示为度量: CompareDate_3PropertyInMDX

最后,由StrToMember报道: CompareDate_4CompareAmount

它有效,但我个人不喜欢这种动态的操作。

当然,这个解决方案并不需要额外的维度,只需要一个属性。您的案例脚本是这样的:

with member [Measures].[CompareAmount]
as (StrToMember("[time dim].[datekey].&["
+[time dim].[datekey].Properties("Compare Date")
+"]"),[Measures].[Amount])

答案 1 :(得分:0)

这个怎么样:

WITH MEMBER [Measures].[CompareAmount]
AS 
(
    SUM(
    EXISTS([TimeDim CompareDate].ComparedToDatekey.children, 
           EXISTING [TimeDim CompareDate].[datekey].children)
    ,[Measures].[Net Amount]
)