我是使用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 巴勃罗
答案 0 :(得分:2)
在工作示例中,您具有StrToMember(“;在非工作示例中,您具有StrToMember(',因此,您应该使用双引号而不是单引号:StrToMember(” [Time]。[Date]。&[“ ...