2

这是 Adventure Works 的一个简单示例:

with 

member test1 as sum([Measures].[Internet Sales Amount]) 
               - [Customer].[Customer].&[28187]

member test2 as sum([Measures].[Internet Sales Amount]) 
                - sum([Customer].[Customer].&[28187],[Measures].[Internet Sales Amount])

member test3 as sum
                (
                    {[Customer].[Customer].children - [Customer].[Customer].&[28187]},
                    [Measures].[Internet Sales Amount]
                ) 

select {test1, test2, test3} on 0
from [Adventure Works]

结果几乎相等,除了“test1”具有非货币类型格式

问题:

  1. “test1” calc-member:如何从“sum”的数值结果中减去“Customer”成员表达式?这看起来不合逻辑,令人心碎。我期望算术减法,集合减法,但不是算术减法的成员......

  2. 所有 (test1,test2,test3) 计算的成员在逻辑上和“性能上”是否相等?如果不是,“test1”成员的正确显式形式是什么?看起来“test2”在大多数情况下会表现得更好,因为“test3”集合减法可能会导致非常大的集合。

4

1 回答 1

2

“test1”与“test2”相同。

正确的显式形式是

member test as ([Measures].[Internet Sales Amount])
                - ([Measures].[Internet Sales Amount], [Customer].[Customer].&[28187])
于 2013-03-14T13:17:01.140 回答