2010-03-24 81 views
2

我遇到了在mdx中限制查询的问题,在where子句中使用except函数。我需要检索一组数据,但不在特定集合中。然后,我创建了一个查询:MDX除了where子句中的函数

select {[Measures].[Amount], [Measures].[Transaction Cost], [Measures].[Transaction Number]} ON COLUMNS,{[ManualProcessing].[All ManualProcessings].[MAGNETICSTRIPE], ManualProcessing].[All ManualProcessings].[MANUAL]} ON ROWS 
FROM [Transactions] 
where except([Product].[All Products].Children,{[Product].[All Products].[Debit}) 

显然这工作得很好,但是当我尝试添加其他限制切片机,我得到这个错误:没有匹配功能签名(设置,会员)。

我目前正在对蒙德里安3.1

是否有可能添加多个限制分割器时,即时通讯唱,除了功能? 有没有其他办法可以得到这个?

回答

0

显然,这不能对蒙德里安完成,因为有这并不让复合的错误切片机,所以我找到了一个很好的解决方案,使用Mondrian OLAP服务器,并创建了一个排除我不想要的组的成员。它看起来像这样。

With member [Product].[Except] as ([Product].[All Products]) - 
([Product].[All Products].[Debit]) 
select {[Measures].[Amount],[Measures].[Transaction Cost], [Measures].[Transaction Number]} ON COLUMNS, 
{[ManualProcessing].[All ManualProcessings].[MAGNETICSTRIPE],[ManualProcessing].[All ManualProcessings].[MANUAL]} ON ROWS 
FROM [Transactions] 
where[Product].[Except] 
3

Except function只适用于集合。 但是你可以在你的where使用n维:

select {[Measures].[Amount], [Measures].[Transaction Cost], [Measures].[Transaction Number]} ON COLUMNS,{[ManualProcessing].[All ManualProcessings].[MAGNETICSTRIPE], ManualProcessing].[All ManualProcessings].[MANUAL]} ON ROWS 
FROM [Transactions] 
where 
    (
     except([Product].[All Products].Children,{[Product].[All Products].[Debit}), 
     except([Set],[Set to exclude]) 
    ) 

这工作Analysis Services 2005中,它应该在蒙德里安

工作