Mdx 在过滤条件中使用集合
我正在icCube的demo Sales cube上尝试以下查询:Mdx 在过滤条件中使用集合,mdx,iccube,Mdx,Iccube,我正在icCube的demo Sales cube上尝试以下查询: WITH SET [Amer.Countries] AS Descendants([North America],[Country]) SELECT Filter([Amer.Countries],([Measures].[Amount], {[2009], [2010]}) > 13240) on Rows, [Measures].members on Columns FRO
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'
右操作数:'numeric'
我从这条消息中了解到的唯一一件事是,集合{[2009]、[2010]}的使用不合适。然而,我不明白为什么会这样,解决办法应该是什么。
13240的左侧需要一个数值或至少一个可以计算为数值的表达式。您编写的不是元组,可以看作是交叉连接。要计算当前国家2009年和2010年的合计[金额]:
([Measures].[Amount], {[2009], [2010]})
您可以使用函数计算过滤值:
eval( {[2009], [2010]}, [Measures].[Amount] )
并在SELECT中使用它来计算忽略切片器中指定的[2011]年的:
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]
为了更好地理解元组、集合等的概念,您可以查看一下MDX的以下内容
希望这会有所帮助。此查询生成一个空结果集,这是没有意义的,因为在北美有一些国家,2009年和2010年的销售额总计超过13240。看起来2011年的切片是在计算[FilterValue]之前应用的,这不是我想要的…我已经编辑了我的响应以使用静态集而不是计算成员。这样,在计算国家集时,切片器将被忽略。
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]