使用多级层次结构生成月份范围

时间:2017-11-23 10:12:27

标签: iccube iccube-reporting

我想通过仅选择从[ComptaEcriture Date][ComptaPlanId].[ComptaDateDebut]的月份来过滤[ComptaPlanId].[ComptaDateFin]的月份,但是 [ComptaDateDebut][ComptaDateFin]不是来自同一级别,僵尸程序与[ComptaEcriture Date].[ComptaEcriture Date].[Month]的维度不同,我不知道如何实现这一目标。

如果我可以产生一系列非常好的月份。我的规模如下:

My dimensions

1 个答案:

答案 0 :(得分:2)

假设您正在测试PlanId不是All会员,您可以使用isAll MDX +功能。

对于集合,我们会将Filter functionDeclared function结合使用,即使我们可以将所有代码都放在过滤器中。它看起来像:

WITH
  FUNCTION inRange(Value _date,Value _start, Value _end) AS _start <= _date AND _date <= _end
  SET myDates as  Filter( [Date].[Date].[Month] as t, inRange(t.current.key, DateTime(2015,6,1), DateTime(2017,1,1)  ) )
SELECT
 myDates on 0
FROM [Cube]

使用紧凑且速度更快的版本:

SELECT
 Filter( [Date].[Date].[Month] as t, DateTime(2015,6,1) <= t.current.key AND t.current.key <= DateTime(2017,1,1) ) on 0
FROM [Cube]

使用成员:

WITH
  FUNCTION inRange(Value _date,Value _start, Value _end) AS _start <= _date AND _date <= _end
  SET myDates as  Filter( [Date].[Date].[Month] as t, 
                    inRange(t.current.key, [ComptaDateDebut].currentmember.key, [ComptaDateFin].currentmember.key  ) 
                  )
SELECT
 myDates on 0
FROM [Cube]

您可以使用contextMember代替currentMember,也可以在切片器中检查(FILTER BY或subselect)