从度量计算中排除默认成员

时间:2009-11-11 20:57:32

标签: ssas mdx

我已经构建了一个包含门票销售信息的多维数据集。

我有一个度量,它是事实表中不同的客户数量。 每个演出的未售票都记录在事实表中,并被分配一个“特殊”客户编号,该编号指的是虚拟客户记录。

我希望客户编号的不同数量不计入用于未售票的“特殊”客户编号。

到目前为止,我最好的尝试是创建一个计算度量,从结果中排除单个客户编号。对于下面的查询,数字是正确的。

WITH SET [RealPeople] AS
    Filter([Customers].[CustomerNumber].CHILDREN, 
           [Customers].[CustomerNumber].CurrentMember.MemberValue <> -100)

MEMBER Measures.[Num Real Households] AS
    DISTINCTCOUNT([RealPeople])

SELECT {Measures.[Num Households], Measures.[Num Real Households]} ON 0,
[Location].[PostalCode].CHILDREN ON 1
FROM Tickets

但是,如果用户查询包含客户编号的相同维度,则此操作无效。当发生这种情况时,[Num Real Households]度量将返回结果中每个属性成员的不同客户编号的总数,而不是为每个属性成员提供小计。

我通过创建一个仅包含客户编号的隐藏维度来解决这个问题。我将这个维度用于RealPeople集。没有人会查询该维度,所以我避免了上述问题。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我认为最好的方法是使用简单的数学。从Distinct Count度量中减去此特殊客户的数量(这只能起作用,因为我假设您在售出的机票所在的家庭中永远不会有“未售出”的票证)

WITH 
  MEMBER Measures.[Num Real Households] AS Measures.[Num Households] 
                        - (Measures.[Num Households],[Customers].[CustomerNumber].&[-100])
SELECT {Measures.[Num Households], Measures.[Num Real Households]} ON 0
,[Location].[PostalCode].CHILDREN ON 1
FROM Tickets