按维度成员筛选MDX度量值

按维度成员筛选MDX度量值,mdx,Mdx,假设我有一个客户维度,我想得到所有那些收入超过100美元的客户。。。在MDX中如何做到这一点?我已经使用这样的过滤器创建了一个成员 Filter([Dim Customer].[Id].Members, [Measures].[Revenue] > 150) 筛选器([Dim客户][Id]。成员,[Measures].[Revenue]>150) 然而,它并没有像预期的那样工作。你通常怎么处理这件事?我希望看到1行,2列,所有收入和来自产生超过150个收入的客户的收入。我的问题是,因为我不希望客

假设我有一个客户维度,我想得到所有那些收入超过100美元的客户。。。在MDX中如何做到这一点?我已经使用这样的过滤器创建了一个成员

Filter([Dim Customer].[Id].Members, [Measures].[Revenue] > 150) 筛选器([Dim客户][Id]。成员,[Measures].[Revenue]>150) 然而,它并没有像预期的那样工作。你通常怎么处理这件事?我希望看到1行,2列,所有收入和来自产生超过150个收入的客户的收入。我的问题是,因为我不希望客户的行显示在行轴上-它没有考虑每个客户的筛选器,而是总体上[度量].[收入]。

请记住filter()-函数返回一个集合,即收入超过150的所有客户的集合。然后需要指定要在此集合上聚合某些内容。这意味着您的计算度量应该如下所示:

WITH MEMBER [Measures].[Revenue for Customers over 150] AS
    Aggregate(
        Filter(Existing ([Dim Customer].[Id].Members),
            [Measures].[Revenue] > 150),
        [Measures].[Revenue]
    )
filter()函数应执行以下操作:

SELECT [Measures].[Internet Sales Amount] ON 0,
filter(
[Customer].[Customer].[Customer].MEMBERS
, [Measures].[Internet Sales Amount] > 150
) ON 1 
FROM [Adventure Works]
大约一半的客户被过滤掉了


菲利普,谢谢你,丹。当我这样做并创建MDX查询来显示此列时,相对于[Measures].[Revenue]的总数,我发现[Measures].[Revenue]比150岁以上客户的收入要少。这是不可能的,因为[Measures].[150岁以上客户的收入]是[Measures].[Revenue]的子集。有什么想法吗?你有没有负收入的客户?听起来很奇怪。如果直接执行以下MDX语句:
将成员[Measures].[Revenue for Customers over 150]作为聚合(筛选器([Dim Customer].[Id]。成员[Measures].[Revenue]>150),[Measures].[Revenue])从[MyCube]中选择0上的{[Measures].[Revenue],[Measures].[Revenue for Customers over 150]}
如果我直接执行该操作,它将显示远大于此的总金额。我认为该成员出于某种奇怪的原因没有考虑WHERE中的过滤条款,但事实并非如此。您是否过滤掉WHERE条款中的一些客户?这就解释了这一点,因为FILTER()函数不考虑当前上下文,而是在整个多维数据集的上下文中计算集合。要解决这个问题,请将
EXISTING
添加到您的计算度量值中-我编辑了我的帖子来演示如何操作。嗨,Philip,您指的是层次结构,但在我的情况下,我没有层次结构。我在客户维度中有一个属性[Id]。