Генерация диапазона месяцев с использованием многоуровневых иерархий
Я хочу отфильтровать месяцы [ComptaEcriture Date]
выбрав только месяцы с [ComptaPlanId].[ComptaDateDebut]
в [ComptaPlanId].[ComptaDateFin]
, но с тех пор [ComptaDateDebut]
а также [ComptaDateFin]
не из того же уровня, и бот не из того же измерения, что и [ComptaEcriture Date].[ComptaEcriture Date].[Month]
Я не знаю, как этого добиться.
Если бы я мог генерировать диапазон месяцев, это было бы здорово. Мои размеры следующие:
1 ответ
Предполагая, что вы проверяете, что PlanId не является участником All, вы можете использовать для этого функцию isAll MDX +.
Для набора мы скомбинируем функцию Filter с объявленной функцией, хотя мы могли бы поместить весь код в фильтр. Это выглядит как:
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)