Ssas 如何基于过滤的维度创建计算的度量值?

Ssas 如何基于过滤的维度创建计算的度量值?,ssas,mdx,sql-server-2012,olap,ssas-2012,Ssas,Mdx,Sql Server 2012,Olap,Ssas 2012,我对MDX比较陌生(刚刚在订购一本书的过程中),在创建一个计算度量方面有点困难,它应该根据一组日期(从我的时间维度)对我的一个事实表中的值求和,这些日期应该由另一个维度的属性过滤。不幸的是,我似乎陷入了一种困境,看不到明确的出路。我查看了其他类似的问题,但没有看到任何人试图做同样的事情,只有一维测量 我有一个度量值组,其中包含物理度量值SourceMeasure 我有一个时间维度,名为[Time],我想用它来指定我的计算范围。通过我的日期键,这与上述度量值组相关 我有一个帐户维度,名为[Dim

我对MDX比较陌生(刚刚在订购一本书的过程中),在创建一个计算度量方面有点困难,它应该根据一组日期(从我的时间维度)对我的一个事实表中的值求和,这些日期应该由另一个维度的属性过滤。不幸的是,我似乎陷入了一种困境,看不到明确的出路。我查看了其他类似的问题,但没有看到任何人试图做同样的事情,只有一维测量

我有一个度量值组,其中包含物理度量值
SourceMeasure

我有一个时间维度,名为
[Time]
,我想用它来指定我的计算范围。通过我的日期键,这与上述度量值组相关

我有一个帐户维度,名为
[Dim Account]
,它包含两个日期属性:
[Account Start date]
[Account End date]
。这通过帐户ID与上述度量值组相关

我试图做的是,根据
[帐户开始日期]
[帐户结束日期]
[时间]
维度筛选到一个范围,并返回该帐户指定期间的
[源度量]
总和

显然,每个帐户的情况不同,因此不应进行聚合,除非通过
[Dim account]
维度进行聚合(如果不应用,可能返回0或null)

下面的示例测试表达式,由于FORMAT_字符串语法错误(根据MDX Studio),该表达式当前不起作用

我尝试了几种不同的方法(范围、筛选、IIF),但每次我似乎都回到了同一个关键点——如何根据[Dim Account]开始和结束日期的值筛选[time]维度

现在,可能是我完全误解了维度之间的关系和/或SSA如何计算计算度量值,但我还不确定要寻找什么,所以我在兜圈子

我想做的是可能的吗?如果可能的话,有没有什么建议可以帮助我找出哪里出了问题?我是否应该改用计算维度


我希望这一切都有意义,如果我遗漏了什么或者需要更多细节,请告诉我。我正在使用进行测试。

我通过将约束标志添加到StrToMember函数中找到了错误

似乎我的[Time]维度的日期条目已默认为“00:00:00”,而我的[Dim Account]维度的日期条目已默认为“12:00:00”。它看起来像是24小时和12小时的时钟不匹配。[Dim Account]维度上的“我的日期”字段标记为“常规”,而不是“日期”,因为该维度不是自然时间维度。我认为这可能是导致不匹配的原因

为了暂时解决这个问题,我从格式表达式中删除了时间格式,并在搜索根本原因时将“00:00:00”添加到字符串中。一旦我解决了,我会更新的

更新:不匹配的原因不是维度,而是我在
strotmember
表达式中使用的格式字符串。MSDN中没有记录,但以下字符串输出12小时时间格式:

"yyyy-mm-ddThh:mm:ss"
"yyyy-mm-ddTHH:mm:ss"
当此字符串输出24小时时间格式时:

"yyyy-mm-ddThh:mm:ss"
"yyyy-mm-ddTHH:mm:ss"