MDX查询级别明智的总和

时间:2013-07-26 20:05:28

标签: ssas mdx

我的问题与MDX查询有关。我将尝试用非常简单的例子来解释它。 让我们假设有一个州有2个城市“城市A”和“城市B”,客户数量为3& 4,金额分别为700和900。

现在业务逻辑是,如果任何城市的客户数超过3,则显示金额。所以答案是City-B,客户数量为4,金额为900

但是当我在STATE级别尝试相同的公式时,我得到了  STATE-1,客户数量 - 7,金额 - 1600

我们有什么方法可以在MDX查询中指定首先在城市级别应用业务逻辑然后总结它吗?

1 个答案:

答案 0 :(得分:3)

是的,如果您想要动态聚合(即反映在较低级别应用过滤器的父级总计),您可以使用子选择。

比较我们在选择中过滤客户组的查询:

SELECT
    {[Measures].[Internet Order Quantity], [Measures].[Internet Sales Amount]} ON 0,
    Union(
        [Customer].[Customer Geography].[All Customers], 
        Filter([Customer].[Customer Geography].[Country],
               [Measures].[Internet Order Quantity] > 6000)
    ) ON 1
FROM [Adventure Works]

// Results
               Internet Order Quantity  Internet Sales Amount
All Customers                   60,398         $29,358,677.22
Australia                       13,345          $9,061,000.58
Canada                           7,620          $1,977,844.86
United Kingdom                   6,906          $3,391,712.21
United States                   21,344          $9,389,789.51

带有查询,我们在其中选择过滤的客户集,导致重新聚合,然后选择新的总计:

SELECT
    {[Measures].[Internet Order Quantity], [Measures].[Internet Sales Amount]} ON 0,
    Union(
        [Customer].[Customer Geography].[All Customers],
        [Customer].[Customer Geography].[Country]
    ) ON 1
FROM (
    SELECT Filter([Customer].[Customer Geography].[Country],
                  [Measures].[Internet Order Quantity] > 6000) ON 0
    FROM [Adventure Works]
)

// Results
               Internet Order Quantity  Internet Sales Amount
All Customers                   49,215         $23,820,347.17
Australia                       13,345          $9,061,000.58
Canada                           7,620          $1,977,844.86
United Kingdom                   6,906          $3,391,712.21
United States                   21,344          $9,389,789.51