1

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

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

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

有什么方法可以在 MDX 查询中指定首先在城市级别应用业务逻辑,然后对其进行总结?

4

1 回答 1

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
于 2013-07-26T23:19:39.160 回答