MDX-范围内的StrToMember

时间:2019-02-26 06:21:16

标签: format range mdx dateadd

我是使用MDX的新手,我在Power BI中使用它来创建不同的报告。

经过与时间范围相关的不同页面的大量研究之后,我实际上仍然遇到了一个问题。

多维数据集中有一个维度[时间]。[日期]。[日期],从 2014 2020 ,所以我想了几个小时使用“当前成员”的所有选项将无法使用。

我需要在过去7、30、60、90天内捕获一个度量。

我发现了两个选择:

选项1.使用WITH和Member:

`WITH MEMBER [Measures].x AS SUM  
({[Time].[Date].&[20190216]:[Time].[Date].&[20190222])
},[Measures].[Avg Loaned])

SELECT NON EMPTY {[Measures].x} on 0
,NON EMPTY ([Time].[Date].[Date]) on 1
FROM [MYCUBE]
WHERE (Some Conditions...)`

选项2.使用WITH,Range和Member

`WITH 
SET [Range] AS
{[Time].[Date].&[20190216]:[Time].[Date].&[20190222]}
MEMBER [Measures].x AS SUM  
   ({nonempty([Range]*[Measures].[Avg Loaned])})  

SELECT NON EMPTY {[Measures].x} on 0
,NON EMPTY ([Time].[Date].[Date]) on 1
FROM [MYCUBE]
WHERE (Some Conditions...)`

在两种情况下,我都能获得正确的结果,并且如果我更换它,似乎仍然可以正常工作

**[Time].[Date].&[20190222]** --> StrToMember("[Time].[Date].&[" + Format(Now(), "YYYYMMDD") + "]")

但是当我替换第一个日期时不起作用

**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(dateadd('d',-7,Now()), 'YYYYMMDD') + "]")

OR

**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(dateadd('d',-7,cdate(Now())), 'YYYYMMDD') + "]")

OR

**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(cstr(dateadd('d',-7,Now())), 'YYYYMMDD') + "]")

我不确定完成任务OPTION 1或2的最佳方法是什么,但是主要障碍是我如何为尝试使用dateadd的范围设定起始限制。

预先感谢,我知道有很多与此相关的帖子,我尝试将示例改编为我的代码,但失败了,几天后,我不确定是什么问题。

Rgds 巴勃罗

1 个答案:

答案 0 :(得分:2)

在工作示例中,您具有StrToMember(“;在非工作示例中,您具有StrToMember(',因此,您应该使用双引号而不是单引号:StrToMember(” [Time]。[Date]。&[“ ...