我想通过仅选择从[ComptaEcriture Date]
到[ComptaPlanId].[ComptaDateDebut]
的月份来过滤[ComptaPlanId].[ComptaDateFin]
的月份,但是
[ComptaDateDebut]
和[ComptaDateFin]
不是来自同一级别,僵尸程序与[ComptaEcriture Date].[ComptaEcriture Date].[Month]
的维度不同,我不知道如何实现这一目标。
如果我可以产生一系列非常好的月份。我的规模如下:
答案 0 :(得分:2)
假设您正在测试PlanId不是All会员,您可以使用isAll MDX +功能。
对于集合,我们会将Filter function与Declared 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)