仅获得数年的结果

时间:2018-11-18 09:43:35

标签: mdx iccube

MDX具有一个不错的功能,通过它我可以指定成员范围:

SELECT ([Canada],[2006]:[2011]) on Rows,
      [Measures].members on Columns
FROM [Sales]

有没有一种方法可以计算偶数年:{[2006], [2008], [2010]}?我正在寻找一种适用于大型集合的方法,因此无法手动列出年份。

3 个答案:

答案 0 :(得分:2)

您可以使用filter functiondeclared functionMOD 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()相同)

答案 1 :(得分:1)

尝试一下。我使用冒险作品进行查询。 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]

答案 2 :(得分:0)

此外,您可以在日期维度中的一列中包含1,0,以指示年份是偶数还是奇数。然后,只需在MDX查询中使用该列,而无需执行上述所有操作