1

Я хочу отфильтровать свой запрос в наборе данных таким образом, чтобы получить даты от начала месяца до вчерашнего дня. Первая часть проста, я прохожу месяц от параметров отчета, поэтому получаю значения с каждого дня в месяц, но почему-то я должен ограничивать это до вчерашнего дня. Я попытался помещать это выражение в предложение where, но он не работал вообще, так как у меня нет даты в строках: FILTER([Date of shipment].[Date], [Date of shipment].[Date] < Format(Now(), "yyyyMMdd"). Я знаю, что могу фильтровать строки, но важно то, что я не хочу, чтобы дата отображалась в строках.MDX Дата фильтрации меньше, чем сегодня

Редактировать: дополнительно я могу использовать параметр, предоставленный основным отчетом, который является вчерашней. Но как мне ограничить дату, не помещая ее в строки? Что-то вроде этого не работает: IIF(STRTOSET(@ShipmentDate, CONSTRAINED).Count = 1, STRTOSET(@ShipmentDate, CONSTRAINED), [Shipment Date].[Date] < @ShipmentDate))

ответ

1

У вас уже есть что-то похожее на это:

SELECT 
    {} ON 0 
, 
    [Date].[Calendar].[Date].&[20050101] 
    : 
    StrToMember 
    ('[Date].[Calendar].[Date].&[20050105]' //<<hard-coded to illustrate 
    ,constrained 
    ) ON 1 
FROM [Adventure Works]; 

Возвращает:

enter image description here

Большинство кубов имеют иерархию даты многоуровневый - так что вы можете изменить свой код, чтобы чем-то вроде так что в следующем году вам не нужно менять бит с жестким кодированием:

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]' тогда я получаю следующее:

enter image description here

+0

Спасибо, это очень приятно. Я воспользуюсь вашим решением. – Dodzik

0

Поскольку месяц прошел через даты параметров, они были ограничены текущим месяцем. Это позволило мне сделать это:

[Shipment date].[Datw].&[20160101] : STRTOMEMBER(@ShipmentDate, constrained) 

, как я сделал это некрасиво, но это работает (возможно, потребуется УХОД, чтобы изменить дату 20170101 в следующем году и так далее).

Смежные вопросы