基于相关维度属性值的SSAS MDX计算度量

基于相关维度属性值的SSAS MDX计算度量,ssas,mdx,Ssas,Mdx,我有一个度量值[Measures].[myMeasure],我想基于相关属性值创建它的几个派生值。 e、 g.如果相关的[Location].[City].[City].Value=“Austin”则我希望新计算的度量值返回[Measures].[myMeasure]的值,否则,我希望新计算的度量值返回0 此外,我需要度量值正确地聚合所有叶级值的总和,以创建一个总数 只要当前成员设置为Austin,以下选项就可以在叶级别工作 Create Member CurrentCube.[Measures

我有一个度量值
[Measures].[myMeasure]
,我想基于相关属性值创建它的几个派生值。
e、 g.如果相关的
[Location].[City].[City].Value=“Austin”
则我希望新计算的度量值返回
[Measures].[myMeasure]
的值,否则,我希望新计算的度量值返回0

此外,我需要度量值正确地聚合所有叶级值的总和,以创建一个总数

只要当前成员设置为Austin,以下选项就可以在叶级别工作

Create Member CurrentCube.[Measures].[NewMeasure] as
iif(
[Location].[City].currentmember = [Location].[City].&[Austin], 
[Measures].[myMeasure], 
0
);
这有两个问题。
1-我并不总是在上下文中有
[Location].[City]

2.如果选择了多个城市,则返回0

我正在寻找一个解决方案,该解决方案无论相关维度是否在上下文中都能工作,并且将根据类似于上面的公式对原子值求和


< >添加更多上下文,考虑具有数量字段的事务表。我想把这笔钱转换成支付、存款、回报等指标。。。根据相关账户。

我不知道答案,但只有几个普通助手:

1与成员进行比较时,应使用
IS
而不是
=

2您应该使用
null
而不是
0
-0/null在效果上是相同的,但是使用
0
会大大降低速度,因为计算会触发更多次。(这可能有助于回答问题的第二部分)


假设myMeasure为奥斯汀的两个地点返回一个值1,那么奥斯汀的合计值是多少?1或2?在
CurrentCube.[Measures].[newmeasures]
中,与成员进行比较时,应使用
IS
而不是
=
。感谢您的输入。我最终在dsv使用的查询中创建了度量值。也许有更好的方法来处理这个问题,但这次我把负担推到了处理时间上。不,不,保罗-你做了正确的事情:虽然在
mdx
中可能,但你最好把这个任务推到数据管道上。希望您能阅读我的建议,因为它通常与编写
mdx
相关。谢谢,whytheq。我感谢您的回复,我希望您能提前使用您的输入进行测试。效果很好。
Create Member CurrentCube.[Measures].[NewMeasure] as
iif(
[Location].[City].currentmember IS [Location].[City].&[Austin], 
[Measures].[myMeasure], 
NULL
);