首页 > 解决方案 > MDX - 范围内的 StrToMember

问题描述

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

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

在 Cube 中有一个维度 [Time].[Date].[Date],从20142020,所以我在几个小时后发现所有使用 Current Member 的选项都不起作用。

我需要在过去 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、范围和成员

`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 巴勃罗

标签: formatrangemdxdateadd

解决方案


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


推荐阅读