MDX-即使在进行筛选时,总数也相同

MDX-即使在进行筛选时,总数也相同,mdx,mondrian,Mdx,Mondrian,我有一个计算过的会员,它带来了所有商店的总销售额。我使用的公式是: SUM(([SHOP].[SHOP].Members), [Measures].[SALES]) 因此,即使我过滤一家店铺,上面计算的成员仍然会为我带来所有店铺的总数 问题是,如果我过滤任何其他维度(比如区域),我的计算成员将只为所选区域带来总数——我知道这是正确的行为 但是,我如何才能生成一个计算成员,该成员为我提供所有商店的总销售额,而不考虑任何过滤器?您将获得所有商店的总销售额,因为公式中有[SHOP].[SHOP].[

我有一个计算过的会员,它带来了所有商店的总销售额。我使用的公式是:

SUM(([SHOP].[SHOP].Members), [Measures].[SALES])
因此,即使我过滤一家店铺,上面计算的成员仍然会为我带来所有店铺的总数

问题是,如果我过滤任何其他维度(比如区域),我的计算成员将只为所选区域带来总数——我知道这是正确的行为


但是,我如何才能生成一个计算成员,该成员为我提供所有商店的总销售额,而不考虑任何过滤器?

您将获得所有商店的总销售额,因为公式中有
[SHOP].[SHOP].[SHOP].成员

这一点让我困惑:

how can I make a calculated member that brings me the total Sales for all the Shops regardless of any filter?
你已经有这样的会员了。相反,如果您想要一名会员为所选的
商店
获取销售额,您真正需要的是:

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
中模拟,我通过将成员
[(全部)]
添加到自定义度量的第一个参数中,预期会添加时间切片器:

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];

我认为您需要预测任何可能的切片器,并将每个切片器的所有成员添加到您的计算中。为什么要添加由函数
.Members
创建的集合,而您只需添加相应的所有成员?它与SUM(([SHOP].[All SHOP].[REGION].[All REGIONs].[Measures].[SALES])一起工作