MDX CountDistinct根据筛选的属性维度计算成员



我对MDX很陌生,我想在MDX 中编写以下SQL语句

  SELECT COUNT(DISTINCT [DESC_Charm])as total
  FROM [Database].[dbo].[tbl_Charm] 
  WHERE ([DESC_Status] = 'solved'
  OR [DESC_Status] = 'terminated'
  OR [DESC_Status] = 'validated')

我在MDX中尝试过这一点,以获得计算会员身份:

SUM(
{   [D Status].[DESC Status].&[solved],
    [D Status].[DESC Status].&[terminated],
    [D Status].[DESC Status].&[validated]
}
,[Measures].[F_CountDistinct_CHARMS]
)

然而,当我在日历周或几个月内按日期汇总时,这句话有时意义重大。。。它只在我最深的聚合级别上正确工作,比如天

我需要的是一个DistinctCount语句,它是按属性维度过滤的,也可以由聚合使用

有人能给我一个如何解决这个问题的建议吗?

我相信他的意思是用AGGREGATE()简单地替换SUM()函数就解决了问题。这是因为所有成员都具有[D Status].[DESC Status]属性。

Aggregate(
{   [D Status].[DESC Status].&[solved],
    [D Status].[DESC Status].&[terminated],
    [D Status].[DESC Status].&[validated]
}
,[Measures].[F_CountDistinct_CHARMS]
)

由于度量值已经是一个不同的计数,如果SSAS中需要过滤器作为OLAP多维数据集计算成员,则可以使用获得

(
   [D Status].[DESC Status].&[solved],
   [D Status].[DESC Status].&[terminated],
   [D Status].[DESC Status].&[validated],
   [Measures].[F_CountDistinct_CHARMS]
)

最新更新