我是使用MDX的新手,我在Power BI中使用它来创建不同的报告。
在与Time Range相关的不同页面中进行了大量研究后,我实际上遇到了问题。
在立方体中有一个维度[时间]。[日期]。[日期],从2014年到2020年,所以我在数小时后发现使用当前成员的所有选项都不起作用。
我需要在最后7,30,60,90天捕获一个测量值。
我找到了两个选择:
选项1.使用WITH和成员:
`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') + "]")
要么
**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(dateadd('d',-7,cdate(Now())), 'YYYYMMDD') + "]")
要么
**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(cstr(dateadd('d',-7,Now())), 'YYYYMMDD') + "]")
我不确定完成任务的最佳方法是什么,选项1或2,但主要的障碍是我如何写下尝试使用dateadd的范围的起始限制。
在此先感谢,我知道有很多关于此的帖子,我试图将这些示例改编为我的代码但是我失败了,过了几天我不确定会出现什么问题。
Rgds Pablo
在您的工作示例中,您有StrToMember(“在非工作示例中,您有StrToMember(',所以可能您应该使用双引号而不是单引号:StrToMember(”[Time]。[Date]。&[“...