我对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]
)