我在icCube的演示销售多维数据集上尝试以下查询:
WITH
SET [Amer.Countries]
AS Descendants([North America],[Country])
SELECT
Filter([Amer.Countries],([Measures].[Amount], {[2009], [2010]}) > 13240) on Rows,
[Measures].members on Columns
FROM [Sales]
WHERE [Time].[2011]
条件([Measures].[Amount], {[2009], [2010]}) > 13240
有什么问题,如何解决?
我从icCube收到以下错误消息:
运营商'>'语法错误(左操作数:'set') (右操作数: '数字')
我从这条消息中唯一理解的是,使用集合{[2009], [2010]}
是不合适的。但是,我不明白为什么会这样,应该修复什么。
答案 0 :(得分:1)
([Measures].[Amount], {[2009], [2010]}) > 13240
13240的左侧需要一个数值或至少一个可以计算为值的表达式。你写的不是一个元组,可以被认为是一个交叉连接。计算2009年的汇总[金额]& 2010年的当前国家:
([Measures].[Amount], {[2009], [2010]})
您可以使用eval函数计算过滤值:
eval( {[2009], [2010]}, [Measures].[Amount] )
在SELECT中使用它来计算忽略切片器中指定年份[2011]的static set:
with
static set [Amer.Countries] as
filter( [North America].children ,
eval( {[2009], [2010]}, [Measures].[Amount]) >= 13240
)
select [Measures].members on 0, [Amer.Countries] on 1
from [Sales] where [Time].[2011]
您可以查看以下introduction MDX,以便更好地理解元组,集合等的概念......
希望有所帮助。