2

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

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

当我唱除函数时,是否可以向切片器添加多个限制?还有其他方法可以得到这个吗?

4

2 回答 2

3

除函数仅适用于集合。但是您可以在您的 : 上使用 n 个维度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}),
      except([Set],[Set to exclude])
   )

这适用于 Analysis Services 2005,它应该适用于蒙德里安

于 2010-03-25T10:14:00.683 回答
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]
于 2010-03-26T19:47:21.297 回答