MDX有一个很好的功能,我可以指定一系列成员:
SELECT ([Canada],[2006]:[2011]) on Rows,
[Measures].members on Columns
FROM [Sales]
有没有办法计算偶数年的集合:{[2006], [2008], [2010]}
?我正在寻找一种适用于大型集合的方法,因此手动列出年份不是一种选择。
你可以使用filter function,declared function和MOD function来过滤你的功能(MOD从分区返回余数 - 比如Java中的%):
WITH
FUNCTION isEven(Value _number) as Mod( Int(_number) , 2 ) = 0
SELECT
FILTER( [Date].[Date].[Year] as t, isEven( Year( t.current.key) ) ) on 0
FROM [Cube]
如果您经常使用此过滤器,您可以在脚本中创建一次FilterEven声明函数(对于isEven()也是如此)
试试这个。我使用冒险作品进行查询。对于mod逻辑,我从Mod Logic获得了帮助
WITH
MEMBER [Measures].[Data Type] AS
[Date].[Day of Year].CurrentMember.Properties ("Member_Value",TYPED)
MEMBER [Measures].[IsEven] as
[Measures].[Data Type]-Int([Measures].[Data Type]/2)*2
select {[Measures].[Internet Order Count] }
on columns,
filter (
[Date].[Day of Year].[Day of Year],
[Measures].[IsEven]=0)
on rows
from [Adventure Works]
另外,日期维度中的列可以有1,0表示年份是偶数还是奇数。然后只需在MDX查询中使用该列,无需执行上述所有操作