format - MDX - 范围内的 StrToMember
问题描述
我是使用 MDX 的新手,我在 Power BI 中使用它来创建不同的报告。
在与时间范围相关的不同页面进行大量研究之后,我实际上遇到了一个问题。
在 Cube 中有一个维度 [Time].[Date].[Date],从2014到2020,所以我在几个小时后发现所有使用 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 巴勃罗
解决方案
在您的工作示例中,您有 StrToMember(",而在非工作示例中,您有 StrToMember(',因此您可能应该使用双引号而不是单引号:StrToMember("[Time].[Date].&["...
推荐阅读
- timer - STM32 arduino 在中断时更改硬件定时器
- javascript - 加载页面时如何解决错误elFinder
- pandas - 如何将乘数应用于数据框中的特定搜索值
- unix - LINUX:如何 AWK 在每个唯一行中找到最大值
- python - 合并/连接两个表,缺少第二个表中的信息
- database - EF Core 数据库连接保持活动状态
- php - 改变 woocommerce 迷你购物车中的价格在一秒后更改为前一个
- python - 在子图中重复 matplotlib 图
- python - Python TWS Interactive Broker 属性错误
- sql - 在 JSON_VALUE 语句中转换 Unix 时间