我在使用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函数时,是否可以为切片器添加多个限制? 有没有其他方法可以得到这个?
答案 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]