EXISTS没有按预期完全过滤

时间:2014-03-24 17:29:34

标签: ssas mdx

如果我执行以下操作,那么2007年和2008年的整个客户部分都是(空)互联网销售额 - 这是为什么?如何使用EXISTS过滤仅在选择

中获得多年结果的客户

注意:年份的选择可能会有所不同,因此InitialSet需要具有上下文感知能力,因此我使用了[Date].[Calendar Weeks].CURRENTMEMBER和EXISTS函数。

WITH 
    SET [InitialSet] AS
       EXISTS(
        {[Customer].[Customer].[Customer].MEMBERS},
        [Date].[Calendar Weeks].CURRENTMEMBER,
        'Internet Sales'
        )
  SET [OrderedSet] AS 
    NONEMPTY
    (
      ORDER
      (
       [InitialSet],
       [Measures].[Internet Sales Amount],
       BDESC
      )
     ,([Measures].[Internet Sales Amount],[Date].[Calendar Weeks].CURRENTMEMBER)
    ) 
SELECT 
    {
      [Date].[Calendar Weeks].[Calendar Year].&[2007],
      [Date].[Calendar Weeks].[Calendar Year].&[2008]
    }  ON 0,
    [OrderedSet] ON 1
FROM [Adventure Works]
WHERE (
    [Measures].[Internet Sales Amount]
    );

1 个答案:

答案 0 :(得分:1)

Analysis Services通过考虑WHERE子句但不使用任何行或列设置来评估集合。如果您只想评估2007年和2008年的集合,则必须说明。

实际上,第一个集合中的[Date].[Calendar Weeks].CURRENTMEMBER将引用[Date].[Calendar Weeks]层次结构的默认成员,即All成员。