MDX除了where子句中的函数

时间:2010-03-24 21:08:57

标签: olap mdx pentaho

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

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})

显然这很好用,但是当我尝试为切片器添加另一个限制时,我收到了这个错误:没有函数匹配签名(Set,Member)。

我目前正在研究mondrian 3.1

当我使用except函数时,是否可以为切片器添加多个限制? 有没有其他方法可以得到这个?

2 个答案:

答案 0 :(得分: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,它应该在Mondrian中工作

答案 1 :(得分:0)

显然这不能在Mondrian上完成,因为有一个错误不允许复合切片器。我使用Mondrian OLAP Server找到了一个很好的解决方案。它正在创建一个排除我不想要的集合的成员。它看起来像这样。

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]