MDX - 范围内的StrToMember

问题描述 投票:0回答:1

我是使用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

format range mdx dateadd
1个回答
2
投票

在您的工作示例中,您有StrToMember(“在非工作示例中,您有StrToMember(',所以可能您应该使用双引号而不是单引号:StrToMember(”[Time]。[Date]。&[“...

© www.soinside.com 2019 - 2024. All rights reserved.