MDX - 即使过滤时总计相同
MDX - same grand total even when filtering
我有一个计算成员,它提供了所有商店的总销售额。我使用的公式是这样的:
SUM(([SHOP].[SHOP].Members), [Measures].[SALES])
所以,即使我过滤了一个商店,上面计算的成员仍然给我所有商店的总数。
问题是,如果我过滤任何其他维度(比方说区域),我的计算成员将只为我带来所选区域的总数 - 我知道这是正确的行为。
但是我怎样才能创建一个计算成员,无论使用任何过滤器,它都能为我带来所有商店的总销售额?
您计算的是所有商店的总数,因为公式中有 [SHOP].[SHOP].Members
。
这让我很困惑:
how can I make a calculated member that brings me the total Sales for all the Shops regardless of any filter?
您已有这样的会员。相反,如果您想要一个能为所选 SHOP
带来销售额的会员,您真正需要的是:
SUM([SHOP].[SHOP].CurrentMember, [Measures].[SALES])
编辑
回想起来,我可能理解你的困惑。如果您希望此计算不受任何其他过滤器选择的影响,您可能需要做的是编辑成员的定义,以便为多维数据集中的每个层次结构包含 ALL
成员。像
SUM(([SHOP].[SHOP].Members, [Region].[Region].Members),......), [Measures].[SALES])
为什么需要这样做是因为每个不完整的元组首先由引擎完成。它隐式地从每个层级 添加 [ALL]
成员,除非 该层级也存在于切片器中。 但是,如果您明确添加 [ALL]
成员,它将取代过滤器选择。
您需要预测任何可能的切片器,然后将它们添加到您的度量中的元组中:
SUM(
(
[SHOP].[(All)]
,[REGION].[(All)]
)
, [Measures].[SALES]
)
模拟 AdvWrks
我预计通过将成员 [(All)]
添加到我的自定义度量的第一个参数中来添加时间切片器:
WITH
MEMBER [Measures].[X] AS
Sum
(
(
[Subcategory].[(All)]
,[Date].[Calendar].[(All)]
)
,[Measures].[Internet Sales Amount]
)
SELECT
{
[Measures].[Internet Sales Amount]
,[Measures].[X]
} ON 0
,[Subcategory].[Subcategory].MEMBERS ON 1
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Calendar Year].&[2008];
我有一个计算成员,它提供了所有商店的总销售额。我使用的公式是这样的:
SUM(([SHOP].[SHOP].Members), [Measures].[SALES])
所以,即使我过滤了一个商店,上面计算的成员仍然给我所有商店的总数。
问题是,如果我过滤任何其他维度(比方说区域),我的计算成员将只为我带来所选区域的总数 - 我知道这是正确的行为。
但是我怎样才能创建一个计算成员,无论使用任何过滤器,它都能为我带来所有商店的总销售额?
您计算的是所有商店的总数,因为公式中有 [SHOP].[SHOP].Members
。
这让我很困惑:
how can I make a calculated member that brings me the total Sales for all the Shops regardless of any filter?
您已有这样的会员。相反,如果您想要一个能为所选 SHOP
带来销售额的会员,您真正需要的是:
SUM([SHOP].[SHOP].CurrentMember, [Measures].[SALES])
编辑
回想起来,我可能理解你的困惑。如果您希望此计算不受任何其他过滤器选择的影响,您可能需要做的是编辑成员的定义,以便为多维数据集中的每个层次结构包含 ALL
成员。像
SUM(([SHOP].[SHOP].Members, [Region].[Region].Members),......), [Measures].[SALES])
为什么需要这样做是因为每个不完整的元组首先由引擎完成。它隐式地从每个层级 添加 [ALL]
成员,除非 该层级也存在于切片器中。 但是,如果您明确添加 [ALL]
成员,它将取代过滤器选择。
您需要预测任何可能的切片器,然后将它们添加到您的度量中的元组中:
SUM(
(
[SHOP].[(All)]
,[REGION].[(All)]
)
, [Measures].[SALES]
)
模拟 AdvWrks
我预计通过将成员 [(All)]
添加到我的自定义度量的第一个参数中来添加时间切片器:
WITH
MEMBER [Measures].[X] AS
Sum
(
(
[Subcategory].[(All)]
,[Date].[Calendar].[(All)]
)
,[Measures].[Internet Sales Amount]
)
SELECT
{
[Measures].[Internet Sales Amount]
,[Measures].[X]
} ON 0
,[Subcategory].[Subcategory].MEMBERS ON 1
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Calendar Year].&[2008];