WHERE 子句中的 MDX 除外函数
Posted
技术标签:
【中文标题】WHERE 子句中的 MDX 除外函数【英文标题】:MDX Except function in where clause 【发布时间】:2010-03-24 21:08:56 【问题描述】:我在限制 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
当我唱除函数时,是否可以向切片器添加多个限制? 有没有其他方法可以得到这个?
【问题讨论】:
【参考方案1】: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
【讨论】:
【参考方案2】:显然这不能在 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]
【讨论】:
以上是关于WHERE 子句中的 MDX 除外函数的主要内容,如果未能解决你的问题,请参考以下文章