2013-08-22 125 views
0

我有一个奇怪的问题,当我的子父层次结构中,当所有子一元运算符都是+时,父计算不正确。分析服务父子层次结构

这里是一元运算符的父子结构的向下运行。

-PBIT (+) 
    -OtherIncome (+) 
    -GrossProfit (+) 
     -Sales  (+) 
     -Cost Of Sales (-) 

这是我跟着http://geekswithblogs.net/darrengosbell/articles/57811.aspx引导和除了事实,有孩子们都与加运算任何父母会增加太多的话,所有的伟大工程。

这里输出数据。

enter image description here

正如你可以看到PBIT值是增加销售量,销售额及其他收入的成本,共同获得的价值。 (即使销售一元运算符的成本是负的!)

起初我以为它可能只是Excel中,但看着它,MDX查询给出了相同的值。

为什么?它似乎只是当一元运算符是+时,任何其他运行正常。

+0

我已经能够得到它的正确计算的唯一方法是在添加一个虚拟儿童与非加元运算符。没有值时,它不会显示在非空查询中,但这仍然非常可怕。 –

+0

您的计算脚本或查询中是否有可能干扰这些值的内容?也许只是删除'CALCULATE'之外的所有内容,然后运行一个简单的MDX查询,而不用任何'WITH'子句。错误的行为是否持续? – FrankPl

回答

1

您参考不描述父子层次结构的设置与一元运算符,因为我会从上下文假定职位,但用来形容人在父子层次结构使用一个成员在几个位置。这涉及到多对多的关系。根据http://connect.microsoft.com/SQLServer/feedback/details/243429/wrong-calculation-for-unary-operator-with-many-to-many-relationships,Analysis Services的一个已知限制是一元运算符聚合不能与多对多关系正常工作,而且似乎微软不会很快改变这种关系。

但至少看起来你已经找到了解决办法。

0

我建议阅读章节“一元运算符的层次结构重新分类”从http://www.sqlbi.com/articles/many2many/ 许多到许多革命白皮书它提供了一个很好的解决方案的问题。

或者通过使用自定义汇总的成员,就可以实现类似的东西。