Ssas 仅在偶数年内取得成果

Ssas 仅在偶数年内取得成果,ssas,mdx,iccube,Ssas,Mdx,Iccube,MDX有一个很好的特性,我可以通过它指定一系列成员: SELECT ([Canada],[2006]:[2011]) on Rows, [Measures].members on Columns FROM [Sales] 有没有办法计算偶数年的集合:{[2006]、[2008]、[2010]}?我正在寻找一种适用于大型集合的方法,因此手动列出年份不是一个选项。您可以使用a、a和(MOD返回Java中除法的剩余部分,如%): 如果您经常使用此筛选器,您可以在脚本中创建一次Filter

MDX有一个很好的特性,我可以通过它指定一系列成员:

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

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

您可以使用a、a和(MOD返回Java中除法的剩余部分,如%):


如果您经常使用此筛选器,您可以在脚本中创建一次FilterEvent声明函数(与IsEvent()相同)

试试这个。我使用AdventureWorks进行查询。对于mod逻辑,我从


另外,您可以在date维度中设置一列,用1,0表示年份是偶数年还是奇数年。然后只需在MDX查询中使用该列,无需执行上述所有操作

这在icCube(示例Sales cube)中不起作用
Year()
导致空异常。我认为对于这个多维数据集,Year键是一个字符串而不是一个日期,将Year()函数更改为CLong(),或者如果键已经是一个整数而不是零。
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]
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]