我对 MDX 相对较新(刚刚在订购一本书的过程中)并且在创建计算度量时有所突破,该度量应该根据一组日期范围(来自我的时间维度),应该由另一个维度的属性过滤。不幸的是,我似乎陷入了困境,看不到明确的出路。我查看了其他类似的问题,但没有看到任何尝试做同样的事情,只有单维度测量。
我有一个测量组,其中包含物理测量SourceMeasure
。
我有一个名为 的时间维度,[Time]
我想用它来指定我的计算范围。这与我的日期键与上述度量组有关。
我有一个名为 的 Account 维度,[Dim Account]
其中包含两个日期属性:[Account Start Date]
和[Account End Date]
。这通过帐户 ID 与上述度量值组相关。
我想要做的是将[Time]
维度过滤到基于[Account Start Date]
and的范围内,并返回为该帐户指定的期间[Account End Date]
的总和。[SourceMeasure]
显然,这对于每个帐户都会有所不同,因此不应聚合,除非按[Dim Account]
维度进行聚合(如果未应用,可能返回 0 或 null)。
下面的示例测试表达式,由于 FORMAT_STRING 语法错误(根据 MDX Studio),目前无法正常工作。
WITH
MEMBER [Measures].[LifetimeMeasure] AS
Sum
(
{
StrToMember
(
"[Time].[Date].&["
+ Format([Dim Account].[Account Start Date].CurrentMember.MemberValue,"yyyy-MM-ddThh:mm:ss")
+ "]"
)
:
StrToMember
(
"[Time].[Date].&["
+ Format([Dim Account].[Account End Date].CurrentMember.MemberValue,"yyyy-MM-ddThh:mm:ss")
+ "]"
)
}
,[Measures].[SourceMeasure]
)
SELECT
{
[Measures].[LifetimeMeasure]
,[Measures].[SourceMeasure]
}
ON COLUMNS
,{
[Dim Account].[Account].[AccountName]
}
ON ROWS
FROM
[MyCube]
我尝试了几种不同的方法(SCOPE、过滤器、IIF),但每次我似乎回到同一个症结点 - 如何根据 [Dim Account] 开始和结束的值过滤 [时间] 维度日期。
现在,可能是我完全误解了维度之间的关系如何工作和/或 SSAS 如何计算计算的度量,但我还没有达到我确定要寻找什么的水平,所以我我在转圈。
我正在尝试做的事情是否可能,如果是这样,是否有任何关于在哪里寻找帮助我找出哪里出错的指示?我是否应该改用计算维度?
我希望这一切都有意义,让我知道我是否遗漏了什么或者是否需要更多细节。我正在使用MDX Studio进行测试。