在子句中的where子句与filter成员的MDX过滤器成员

时间:2012-07-06 05:49:04

标签: mdx where-clause subquery

在冒险中工作这两种情况之间的区别是什么:

1)From Clause中的过滤器成员:

with
member [existing_categries_Member_Count]as
    count(existing[Product].[Category].[Category].members)
member [existing_subcategries_Member_Count]as
    count(existing[Product].[subCategory].[subCategory].members)
select 
{
    [existing_subcategries_Member_Count],
    [existing_categries_Member_Count]
} on 0
FROM (
    SELECT [Product].[Subcategory].&[31] ON 0
    FROM [Adventure Works])

结果:

existing_subcategries_Member_Count  existing_categries_Member_Count
                    37                            4

和 2)过滤成员在WHERE子句中:

with
member [existing_categries_Member_Count]as
    count(existing[Product].[Category].[Category].members)
member [existing_subcategries_Member_Count]as
    count(existing[Product].[subCategory].[subCategory].members)
select 
{
    [existing_subcategries_Member_Count],
    [existing_categries_Member_Count]
} on 0
FROM [Adventure Works]
WHERE [Product].[Subcategory].&[31]

结果:

existing_subcategries_Member_Count  existing_categries_Member_Count
                   1                              1

我希望两个查询的结果相同,但我看到了不同的结果。 请告诉我WHERE和SUbcube之间的区别 感谢

1 个答案:

答案 0 :(得分:0)

  • 将成员放入WHERE子句时,会覆盖默认成员(上下文已更改)。

  • 评估subselect后,[Product].[Subcategory]上的当前成员仍为[Product].[Subcategory].[All Products]

当您在计算成员中使用existing关键字时,您无法获得相同的结果。如果你删除它,你的2个查询将得到相同的结果。