我的问题与MDX查询有关。我将尝试用非常简单的例子来解释它。 让我们假设有一个州有2个城市“城市A”和“城市B”,客户数量为3& 4,金额分别为700和900。
现在业务逻辑是,如果任何城市的客户数超过3,则显示金额。所以答案是City-B,客户数量为4,金额为900
但是当我在STATE级别尝试相同的公式时,我得到了 STATE-1,客户数量 - 7,金额 - 1600
我们有什么方法可以在MDX查询中指定首先在城市级别应用业务逻辑然后总结它吗?
答案 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