Дата фильтра MDX меньше, чем сегодня
Я хочу отфильтровать свой запрос в наборе данных таким образом, чтобы у меня были даты с начала месяца до вчерашнего дня. Первая часть проста, я передаю месяц из параметров отчета, поэтому я получаю значения каждый день в месяце, но каким-то образом я должен ограничить это до вчерашнего дня. Я попытался поместить это выражение в предложение where, но оно не сработало вообще, поскольку у меня нет даты в строках: FILTER([Date of shipment].[Date], [Date of shipment].[Date] < Format(Now(), "yyyyMMdd")
, Я знаю, что могу фильтровать строки, но важно то, что я не хочу, чтобы Дата отображалась в строках.
Изменить: дополнительно я могу использовать параметр, предоставленный основным отчетом, который является вчерашней датой. Но как мне ограничить дату, не помещая ее в строки? Нечто подобное не работает: IIF( STRTOSET(@ShipmentDate, CONSTRAINED).Count = 1, STRTOSET(@ShipmentDate, CONSTRAINED), [Shipment Date].[Date] < @ShipmentDate))
2 ответа
У вас уже есть что-то похожее на это:
SELECT
{} ON 0
,
[Date].[Calendar].[Date].&[20050101]
:
StrToMember
('[Date].[Calendar].[Date].&[20050105]' //<<hard-coded to illustrate
,constrained
) ON 1
FROM [Adventure Works];
Возвращает:
Большинство кубов имеют многоуровневую иерархию дат - так что вы можете изменить свой код на что-то вроде того, чтобы в следующем году вам не нужно было менять жестко закодированный бит:
SELECT
{} ON 0
,
Descendants
(
Exists
(
[Date].[Calendar].[Calendar Year].MEMBERS
,StrToMember
(@ShipmentDate
,constrained
)
).Item(0)
,[Date].[Calendar].[Date]
).Item(0)
:
StrToMember
(@ShipmentDate
,constrained
) ON 1
FROM [Adventure Works];
Если @ShipmentDate
установлен в '[Date].[Calendar].[Date].&[20060105]'
тогда я получаю следующее:
Решение: Поскольку у меня прошел месяц через параметры, даты были ограничены текущим месяцем. Это позволило мне сделать это:
[Shipment date].[Datw].&[20160101] : STRTOMEMBER(@ShipmentDate, constrained)
То, как я это сделал, ужасно, но это работает (может потребоваться обслуживание, изменить дату на 20170101 в следующем году и т. Д.).