我的问题与 MDX 查询有关。我将尝试用非常简单的例子来解释它。假设有一个州有 2 个城市“City-A”和“City-B”,客户数量为 3 和 4,金额分别为 700 和 900。
现在的业务逻辑是,如果任何城市的客户数量超过 3,则显示数量。所以答案是 City-B,客户数量 - 4,金额 - 900
但是当我在 STATE 级别尝试相同的公式时,我得到 STATE-1,客户数 - 7,金额 - 1600
有什么方法可以在 MDX 查询中指定首先在城市级别应用业务逻辑,然后对其进行总结?
是的,如果您想要动态聚合(即反映在较低级别应用的过滤器的父总计),您可以使用子选择。
比较我们在选择中过滤客户集的查询:
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